【问题标题】:SwiftUI: Parse JSON and create dynamic listSwiftUI:解析 JSON 并创建动态列表
【发布时间】:2020-05-30 15:43:47
【问题描述】:

我想解析/解码一个 JSON 字符串,然后创建一个动态列表。

示例 JSON: [{"course":"course1","teacher":"teacherName1"},{"course":"course1","teacher":"teacherName2"}]

我的愿望:

List {
  HStack {
    Text("course1")
    Spacer()
    Text("teacherName1")
  }
  HStack {
    Text("course2")
    Spacer()
    Text("teacherName2")
  }
}

我已经尝试过使用 JSONDecoder() 和数组,但 Xcode 一遍又一遍地用这条消息标记我的 TabView:Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>?'

我是 swift 新手,抱歉 ;)

【问题讨论】:

  • 告诉我们,你尝试了什么!如果这不是您的问题的一部分,那么有人如何帮助您编写代码?

标签: ios json swift xcode swiftui


【解决方案1】:

我做了一个例子,你可以效仿:

import SwiftUI

let jsonString = """
[{"course":"course1","teacher":"teacherName1"},{"course":"course1","teacher":"teacherName2"}]
"""

let data = jsonString.data(using: .utf8) ?? Data()


struct Course: Codable, Identifiable {

    let id = UUID()
    let course: String
    let teacher: String
}

struct ContentView: View {

    let courses: [Course] = (try? JSONDecoder().decode([Course].self, from: data)) ?? []

    var body: some View {
        List(courses) { course in
            HStack {
                Text(course.course)
                Spacer()
                Text(course.teacher)
            }
        }
    }
}

我将Course 结构体确认为IdentifiableCodable,以便List 可以遍历课程数组。此外,如果解码失败,我默认为空 Data 和空课程数组。您可以根据需要在此处编写更好的错误处理。

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2021-10-24
    • 1970-01-01
    • 2012-11-25
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多