所以我有一个带有嵌套数组[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/