小编Dáv*_*tor的帖子

在 Swift 4 中解码 JSON

我正在研究苹果应用程序开发指南,这是我现在正在使用的代码......

struct CategoryInfo: Codable {
    var category: String
    var description: String
    var logo: String
    var mobileCategoryName: String

    enum Keys: String, CodingKey {
        case category
        case description = "descr"
        case logo
        case mobileCategoryName = "mobileCatName"
    }

    init(from decoder: Decoder) throws {
        let valueContainer = try decoder.container(keyedBy: Keys.self)
        self.category = try valueContainer.decode(String.self, forKey: Keys.category)
        self.description = try valueContainer.decode(String.self, forKey: Keys.description)
        self.logo = try valueContainer.decode(String.self, forKey: Keys.logo)
        self.mobileCategoryName = try valueContainer.decode(String.self, forKey: Keys.mobileCategoryName)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    let categories = …
Run Code Online (Sandbox Code Playgroud)

json swift codable

2
推荐指数
1
解决办法
714
查看次数

view.bounds.size.height -vs-view.bounds.height - 有什么区别?

我注意到在IOS X-Code中使用(Swift 4.0),我至少可以通过以下两种方式询问视图的高度V:

V.bounds.size.height
Run Code Online (Sandbox Code Playgroud)

和...

V.bounds.height
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么实际差异吗?

我做了选项单击的东西(它给出了不同的定义,但没有解释任何实际差异或原因而不是另一个)...和stackoverflow ...但是在stackoverflow上,所有的结果都讨论了它们之间的区别边界框架 ......这不是我要问的.

uiview ios swift

2
推荐指数
1
解决办法
214
查看次数

如何在 watchOS6 中注入 .environmentObject()

我想在 watchOS6 中创建 SwiftUI 视图时注入 EnvironmentObject。

但是由于 WKHostingController 需要一个具体类型,我无法执行以下操作 ContentView().environmentObject(UserData())

class HostingController: WKHostingController<ContentView> {
    override var body: ContentView {
        return ContentView().environmentObject(UserData())
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码失败并出现以下错误:

无法将“some View”类型的返回表达式转换为“ContentView”类型

我见过这样的解决方法: 在 watchOS 中使用 environmentObject这似乎是一个黑客而不是一个正确的解决方案。

我问关于同在Twitter上watchOS工程师,他的回答是地方.environmentObject(UserData())的主体内ContentView()。我尝试这样做,但 Xcode 报告错误。

那么有没有人找到一种方法来做同样的事情?

swift swiftui watchos-6

2
推荐指数
1
解决办法
664
查看次数

如何将整数“1”的字符快速转换为字符串“One”

我想将 int 数字转换为这个数字的字母。我有一个文本字段。在这个文本字段中,用户可以写数字,然后我想将此数字转换为字母。例如,我想将 11 转换为 11。我怎样才能在 swift 中完成这项工作。

swift

2
推荐指数
1
解决办法
156
查看次数

像文档中那样在 Swift 中隐藏了函数的实现吗?

我正在构建一个相当大的库,我认为如果我可以将我的方法的实现和隐藏起来会更干净。例如,当您查看标准 Swift 类型(例如 )的代码内文档时UInt64,您会看到如下内容:在此处输入图片说明

隐藏了方法的实际实现,只显示了声明和标题。我怎样才能用我自己的图书馆做到这一点?

xcode libraries swift

2
推荐指数
1
解决办法
191
查看次数

迭代 StackView,Swift

我有一个由 3 个 StackView 组成的自定义单元格。每一个都有一个标题、一个描述和一个水平图像。我必须用数组填充这个单元格,它最多可以由 3 个元素组成,但也可以有 2 或 1 个。所以在我的 viewModel 中,我像这样处理这个数组......

let firstItem = myArray[0]
let secondItem = myArray[1]
let thirdItem = myArray[2]
Run Code Online (Sandbox Code Playgroud)

我用...填充字段firstItem.name firstItem.description......对于其中每一个(我猜这不是最好的方法)然后我做了一些检查索引是否存在,如果不存在我删除StackView,我手动设置一些约束并且我适合单元格到内容(如果我有 2 个元素,则单元格较短,如果我有 3 个元素,则单元格较大)。

这是我检查索引 3 不存在后的一段代码:

self.stackView.removeFromSuperview()
self.ownConstraints.constant = value (20 for example)
Run Code Online (Sandbox Code Playgroud)

我的问题是,实现这一目标的最佳方法是什么?对于单元格,我通常会通过 for 循环逐一附加项目,但我不熟悉单元格内 StackView 上的这种方法。

这就是我对单元格(一系列具有 1 个名称和 1 个描述的单元格)所做的操作:

for (element) in myArray {
   self.cellArray.append( elementName , elementDescription ) 
}
Run Code Online (Sandbox Code Playgroud)

arrays ios swift uistackview

2
推荐指数
1
解决办法
2795
查看次数

当相同的属性名称是可选的时,快速协议一致性

当协议将属性声明为optional并且具体类型将其声明为non-optional 时,如何使具体类型符合协议?

这是问题所在:

protocol Track {
    var trackNumber: Int? { get } // not all tracks have a track number
}

struct SpotifyTrack {
    let trackNumber: Int // all SpotifyTrack are guaranteed to have a track number
}

extension SpotifyTrack: Track {
    var trackNumber: Int? {
        return self.trackNumber // WARNING: All paths through this function will call itself
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想将其设为trackNumber可选项,SpotifyTrack因为我知道 SpotifyTracks 的价值将始终存在。有没有比重命名属性更优雅的解决方案?

swift swift-protocols

2
推荐指数
1
解决办法
405
查看次数

iOS 14 小部件可用内存

在互联网上搜索我发现在小部件的旧版本中存在以下内存限制:

对用户交互做出适当的响应。表现良好(尤其是 iOS 小部件必须明智地使用内存,否则系统可能会终止它们)。” 小部件的内存限制为 16 MB,因此请保持简单并确保测试您的小部件是否存在内存泄漏

我想了解新版本iOS 14可能使用的内存是否相同或已更改。

我在文档中找不到任何内容。

我想在 中编写一个小部件Swift ui,但首先我想了解是否有任何限制。

谁能给我一些澄清?

ios swift widgetkit swiftui ios14

2
推荐指数
1
解决办法
620
查看次数

我收到一个名为“传递给不带参数的调用的参数”的错误

我正在关注 Scrumdinger 应用程序的 ios 应用程序开发教程,并且我一直在遵循该教程,并且它一直有效,直到我完成“使用绑定传递数据”部分。我在第 58 行“DetailEditView(data: $data)”上不断出现错误。这正是教程所说的,所以我不知道为什么会出现错误。

这是我的详细视图文件的完整代码:“

//
//  DetailView.swift
//  Scrumdinger
//
//  Created by ZOE HEIM on 4/25/22.
//

import Foundation

import SwiftUI

struct DetailView: View {
    @Binding var scrum: DailyScrum
    
    @State private var data = DailyScrum.Data()
    @State private var isPresentingEditView = false
    
    var body: some View {
        List {
            Section(header: Text("Meeting Info")) {
                NavigationLink(destination: MeetingView()) {
                    Label("Start Meeting", systemImage: "timer")
                        .font(.headline)
                        .foregroundColor(.accentColor)
                }
                HStack {
                    Label("Length", systemImage: "clock")
                    Spacer()
                    Text("\(scrum.lengthInMinutes) minutes")
                }
                .accessibilityElement(children: .combine)
                HStack …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

2
推荐指数
1
解决办法
436
查看次数

UIDevice.current.name 返回错误值

也许我错了,但请看一下:

在此输入图像描述

但正如你所看到的:

在此输入图像描述

不应该回来吗Sprytny Sid

uikit uidevice ios swift

2
推荐指数
1
解决办法
877
查看次数