来自 JSON/Dictionary 的 SwiftUI 列表
Posted
技术标签:
【中文标题】来自 JSON/Dictionary 的 SwiftUI 列表【英文标题】:SwiftUI List from JSON/Dictionary 【发布时间】:2021-03-20 22:43:15 【问题描述】:刚开始使用 SwiftUI,对于这个基本问题,我们深表歉意。我有一个从以下格式的 JSON 文件创建的字典:
"first_name": "John",
"last_name": "Doe",
"email": "John.doe@domain.com"
,
"first_name": "Jane",
"last_name": "Doe",
"email": "Jane.doe@domain.com"
我想创建一个 first_name 列表,然后可以在其他文件中使用,名称是唯一的,因此不需要 UUID。到目前为止,我可以将我的数据加载到一个 swift 文件中并使用以下方法显示它:
struct DataTest: View
let people = Bundle.main.decode("people.json")
var body: some View
VStack
ForEach(0 ..< people.count)number in
Text("\(people[number].first_name)")
有什么方法可以在不使用 ForEach 循环的情况下生成数组或列表?我绑定了 @State private var = people.first_name 之类的东西,但这似乎不起作用。
【问题讨论】:
您是在问如何从数组中获取单个条目?尽管您遗漏了一些代码,但似乎people
已经是一个数组。
我没有正确解释,所以我想得到一个只有名字的列表,在这种情况下,列表应该是 ["John", "Jane"]
【参考方案1】:
假设是这样的结构:
struct Person
var first_name : String
var last_name : String
var email: String
而people
是[Person]
,您可以像这样映射单个属性:
let firstNamesOnly = people.map $0.first_name
或者,Swift 5.2 中的新功能:
let firstNamesOnly = people.map(\.first_name)
您可以在计算属性和List
中使用它:
var firstNames : [String]
people.map(\.first_name)
var body: some View
VStack
ForEach(firstNames, id: \.self) firstName in
Text(firstName)
【讨论】:
以上是关于来自 JSON/Dictionary 的 SwiftUI 列表的主要内容,如果未能解决你的问题,请参考以下文章