如何在 SwiftUI 中使用字典创建一个数组,然后调用它们?

Posted

技术标签:

【中文标题】如何在 SwiftUI 中使用字典创建一个数组,然后调用它们?【英文标题】:How can I make an Array with Dictionaris in SwiftUI, and then call them? 【发布时间】:2021-10-22 14:52:58 【问题描述】:

这里的问题很简单/很难。所以我想在一个数组中有一个字典标题列表,然后使用该数组调用一个随机字典

在文本字段中我想要 dic1 "A" ("first")

我怎样才能得到这个?

 let dic1 = [
"A" : "first",
"B" : "second"]
 let dic2 = [
"A" : "one",
"B" : "two"
]

var dicArray = ["dic1", "dic2"]

text("\(dicArray[0])")

【问题讨论】:

去掉双引号:let dicArray = [dic1, dic2] 谢谢,但我如何获得值“A”?我可以“打印(dicArray [0])”并得到[“B”:“第二”,“A”:“第一”],但我只想要“第一” dicArray[0]["A"]A,值为first)。使用自定义结构会更舒服。 谢谢!寻求帮助!现在工作 【参考方案1】:

除了在实例化 dicArray 时删除引号之外,您还需要在 Text 中做更多的工作。你实例化dicArray 的方式,你把它变成了[String],而不是[[String:String]]。完整的视图是:

struct DictView: View 
    let dic1 = [
        "A" : "first",
        "B" : "second"]
    let dic2 = [
        "A" : "one",
        "B" : "two"
    ]
    
    var dicArray: [[String:String]]
    init() 
        dicArray = [dic1, dic2]
    
    
    var body: some View 
        Text("\(dicArray[0]["A"] ?? "")")
    

请记住,因为它是一个字典,所以不能保证“A”有一个 key:value,所以你也必须处理可选的。

【讨论】:

谢谢!看起来它现在在操场上工作,将尝试将其添加到我的应用程序中:D 正如@vadian 暗示的那样,这确实不是推荐的方法。您应该将字典作为单独的类型,然后让所有变量都具有相同的类型。它使它更清洁。请记住,Dict 已经是一个集合。本质上,您正在制作一个集合的集合。 是的,你的方法很完美!

以上是关于如何在 SwiftUI 中使用字典创建一个数组,然后调用它们?的主要内容,如果未能解决你的问题,请参考以下文章

[SwiftUI]:ForEach 不适用于字典数组、带数组的字典

SwiftUI 使用 List 和 Foreach 遍历字典中的键并创建列表视图

如何在 SwiftUI 上创建一个空的“视图”数组?

如何将字典项分别添加到 SwiftUI 列表中

如何在 swiftUI 中显示数组数组

有啥方法可以在 SwiftUI 中使用 @ViewBuilder 创建/提取视图数组