ios - 如何在 SwiftUI 中迭代/foreach 数组

标签 ios swift xcode swiftui

我有这个字典数组。

let deckColors = [
    ["name": "blue", "desc": "desc1"],
    ["name": "yellow", "desc": "desc2"],
]

而我的观点:
struct ContentView: View {
    var body: some View {
        ForEach(0 ..< deckColors.count) {value in
            Text(deckColors[value]["name"])
        }
    }
}

我怎样才能让它工作?当前出现此错误:协议(protocol)类型 Any不符合 StringProtocol因为只有具体类型才能符合协议(protocol)

最佳答案

这似乎是实现结构的一种非常复杂的方式:

struct DeckColor {
    var name: String
    var desc: String
}

let deckColors = [
    DeckColor(name: "blue", desc: "desc1"),
    DeckColor(name: "yellow", desc: "desc2")
]

struct ContentView: View {
    var body: some View {
        ForEach(0 ..< deckColors.count) { value in
            Text(deckColors[value].name)
        }
    }
}

您实现它的方式需要处理字典不包含 "name" 的情况。值(value)。你可以这样做,但它更丑陋,更脆弱:
struct ContentView: View {
    var body: some View {
        ForEach(0 ..< deckColors.count) { value in
            Text(deckColors[value]["name"] ?? "default text if name isn't there.")
        }
    }
}

关于ios - 如何在 SwiftUI 中迭代/foreach 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60254412/

相关文章:

ios - Facebook登录审核失败

ios - Swift Parse - 本地数据存储项未出现在 tableView 中

Swift 3/4 - 从椭圆曲线 key 对生成 SecCertificate

ios - 应用程序因 EXC_BREAKPOINT 错误而崩溃

xcode - 构建失败并显示 "Command failed with a nonzero exit code"

android - 如何处理播放指令

ios - 土耳其语字符的 Swift 过滤问题

ios - 在 viewWillAppear/viewWillDisappear 中添加观察者/移除观察者

ios - 使用自动布局时如何在 UIScrollView 中水平居中 UIView?

ios - React Native 自定义 TabBarIOS 样式