【发布时间】:2020-10-11 07:42:53
【问题描述】:
我有一个返回带有键的 JSON 对象的 API: http://acnhapi.com/v1/bugs
由于它不是数组,我想了解如何遍历它。我正在尝试通过使用它们的键 common_butterfly 和 yellow_butterfly 等来获取错误名称“普通蝴蝶”和“黄色蝴蝶”等的列表。
我想显示common_butterfly.name.name-USen 的值,但针对每个错误。所以我的列表视图最终应该显示为:
- 普通蝴蝶
- 黄蝴蝶
- 虎蝶
- 等
(按字母顺序排列将是一个奖励)
数据
import SwiftUI
struct Bugs: Codable, Identifiable {
let id = UUID()
var name: String
}
class FetchBugs: ObservableObject {
@Published var bugs = [Bugs]()
init() {
let url = URL(string: "http://acnhapi.com/v1/bugs")!
URLSession.shared.dataTask(with: url) {(data, response, error) in
do {
if let bugsData = data {
let decodedData = try JSONDecoder().decode([Bugs].self, from: bugsData)
DispatchQueue.main.async {
self.bugs = decodedData
}
} else {
print("No data")
}
} catch {
print("Error")
}
}.resume()
}
}
列表
import SwiftUI
struct BugList: View {
@ObservedObject var fetch = FetchBugs()
var body: some View {
VStack {
List(fetch.bugs) { bug in
VStack(alignment: .leading) {
Text(bug.name)
}
}
}
}
}
struct BugList_Previews: PreviewProvider {
static var previews: some View {
BugList()
}
}
【问题讨论】:
-
你的问题是什么,是关于 json 解码还是如何访问
bugs数组/字典,还是关于 SwiftUI 部分? -
访问
X.name.name-USen,其中 X 是 JSON 对象中的键。现在我列表中的 VStack 没有访问正确的字段。
标签: swift xcode swiftui swiftui-list