json - 来自 JSON/Dictionary 的 SwiftUI 列表
问题描述
刚开始使用 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 之类的东西,但这似乎不起作用。
解决方案
假设是这个结构:
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)
}
}
}
推荐阅读
- android - 为 Espresso 测试制作 CoroutineDispatcher IdlingResource
- php - 如何从数据库表中检索数组
- go - 避免 labstack/echo 路由中的全局变量
- google-coral - 我在哪里可以下载谷歌珊瑚套件的内核源代码?
- r - ggplot2中曲线下的阴影区域
- javascript - 为什么我的 sequelize 模型实例丢失了它的 id?
- html - Angular 7 - 如何在 HTML 中的对象内显示数组
- curl - 使用 curl 启动带有参数的 rundeck 作业
- python-3.x - 如何在 Python 中在字符串上实现滑动窗口以使每个新窗口都在 O(1) 中构建
- python-3.x - 使用 Colab 从 Google Drive 打开图像