sections - 如何使用 [String:generic struct] 列出 Json
问题描述
我有这个结构,:
// MARK: - JsonAPIData
struct JsonAPIData: Codable {
let data: [String: APIData]
let success: Bool
}
// MARK: - Datum
struct APIData: Codable, Identifiable {
let id = UUID()
let maxVersion, minVersion: Int
}
我想使用这些结构在 SwiftUI 中创建数据列表。我试过这个:
struct ContentView: View {
@State var results: JsonAPIData
var body: some View {
List(results.data.values) { data in
Text("\(data)")
}
.onAppear {
self.loadData()
}
}
func loadData() {
//My code to load `results`
}.resume()
}
}
但我有这个错误:
Initializer 'init(_:rowContent:)' requires that 'Dictionary<String, APIData>.Values' conform to 'RandomAccessCollection'
我该如何解决 listkeys
和values
of 的问题APIData
?
解决方案
你可以试试这个:(但请记住:如果你遍历字典,顺序是随机的......)
struct JsonAPIData: Codable {
let data: [String: APIData]
let success: Bool
}
// MARK: - Datum
struct APIData: Codable, Identifiable {
let id = UUID()
let maxVersion, minVersion: Int
}
struct ContentView: View {
func getKeys() -> [String] {
return results.data.map{$0.key}
}
func getValues() -> [APIData] {
return results.data.map{$0.value}
}
@State var results: JsonAPIData
var body: some View {
List(getKeys(), id: \.self) { key in
Text("\(self.results.data[key]!.maxVersion)")
}
.onAppear {
self.loadData()
}
}
func loadData() {
//My code to load `results`
}
推荐阅读
- jquery - jQuery Ajax 响应给我我的 index.html
- c# - 如何投射查找的TElement;即 ILookup
到 ILookup ? - python - Web2Py 管理界面中的异常错误
- node.js - Nodejs multer-sftp文件上传问题
- sql-server - 如果 AlwaysOn 可用性组中的一个数据库出现故障,是否会启动故障转移?
- php - 登录表单什么都不做,只刷新页面
- clearcase - 在 clearcase 命令 lstype 中使用日期范围作为类型选择器是可能的吗?
- actions-on-google - 特征 action.devices.traits.Modes 似乎不起作用
- c# - 检查文件夹是否存在于文档文件夹中
- vba - 使用 VB 查找 Outlook Exchange 配置文件创建日期