所以我有一个带有嵌套数组[CityModel]和[TownModel]的模型[UserModel]。我很确定模型的设置是正确的,但是我认为我在尝试引用嵌套数组时语法错误。
这是我的UserModel.swift:

import SwiftUI

struct UserModel: Codable, Identifiable {
    let id: Int
    let firstName: String
    let lastName: String
    let cities: [CityModel]

    enum CodingKeys: String, CodingKey {
        case id
        case firstName = "first_name"
        case lastName = "last_name"
        case cities
    }
}

struct CityModel: Codable {
    let name: String
    let towns: [TownModel]
}

struct TownModel: Codable {
    let name: String
}

问题出在CityRow.swift中,我只想显示一个城市的名称(这样我就可以在CityList中调用它并在一个用户下显示所有城市)。
struct CityRow: View {
    var city: [UserModel.CityModel]

    var body: some View {
        VStack(alignment: .leading) {
            Text(city.name)
                .font(.headline)
        }
    }
}

struct CityRow_Previews: PreviewProvider {
    static var previews: some View {
        CityRow(city: userData[0])
    }
}

但是当我试图写出我的“city”变量时,我得到了这个错误。
'CityModel' is not a member type of 'UserModel'

我确信我的“var city:[UserModel.CityModel]”语法是不正确的,但不确定如何才能做到这一点?

最佳答案

你的城市需要一个城市来命名。CityModel不是UserModel的成员,但cities是。
我不知道你的应用程序,也不知道你想实现什么,但例如,在一个列表中,你想展示阵列中的每个城市。
您的CityRow需要var city: CityModel作为构造函数。它可能看起来是这样的(同样,我不知道你在努力实现什么,更多的信息/代码会有帮助!).
这是你的城市之旅

struct CityRow: View {
    var city: CityModel

    var body: some View {
        VStack(alignment: .leading) {
            Text(city.name)
                .font(.headline)
        }
    }
}

这是ForEach循环,你可以在列表中使用
ForEach(user.cities) {city in
    CityRow(city: city)
}

如果你能用更多的代码来编辑你的问题,比如显示所有CityRows的视图,那将会很有帮助!

关于arrays - 尝试从SwiftUI View 中的嵌套数组调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58616977/

10-10 23:13