尝试从 SwiftUI 视图中的嵌套数组调用

Posted

技术标签:

【中文标题】尝试从 SwiftUI 视图中的嵌套数组调用【英文标题】:Trying to call from a nested array in a SwiftUI view 【发布时间】:2019-10-29 23:58:44 【问题描述】:

所以我有一个模型 [UserModel],其中包含嵌套数组 [CityModel] 和该 [TownModel]。我很确定模型设置正确,但我认为尝试引用嵌套数组的语法错误。

这是我的 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])
    

但在尝试写出我的“城市”变量时出现此错误。

'CityModel' is not a member type of 'UserModel'

我确定我的“var city: [UserModel.CityModel]”语法不正确,但不知道该怎么做?

【问题讨论】:

【参考方案1】:

您的 CityRow 需要一个城市才能说出它的名字。 CityModel 不是 UserModel 的成员,但城市是。 我不知道您的应用程序或您想要实现的目标,但例如在列表中,您要显示数组中的每个城市。 您的 CityRow 需要 var city: CityModel 作为构造函数。它可能看起来像这样(同样,我不知道您要实现什么,更多信息/代码会有所帮助!)。

这是你的 CityRow

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 的视图,那将会很有帮助!

【讨论】:

谢谢你,我开始编辑这篇文章以填补我需要的全部帮助,并意识到它可能更适合作为一个单独的帖子——我在这里做了***.com/questions/58635853/… @FuegoDeBassi 我在那里回答了,即使还有另一个答案。另一个答案可能有效,但我做了一些调整。祝你有美好的一天!

以上是关于尝试从 SwiftUI 视图中的嵌套数组调用的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:从嵌套视图调用方法

SwiftUI - 从嵌套数组中列出对象

如何将字符串数组从视图模型传递到 swiftUI 中播放歌曲

SwiftUI 嵌套数组结构并在列表中显示

视图中的嵌套 ForEach(和列表)给出了意想不到的结果

将数据从模型传递到 SwiftUI 中的视图