Arrays 在SwiftUI中显示嵌套数组中的项目

Arrays 在SwiftUI中显示嵌套数组中的项目,arrays,foreach,swiftui,Arrays,Foreach,Swiftui,我正在尝试解码Yelp的JSON。文件中有一个嵌套的类别数组。一些企业有1个,其他企业可能有3个 这里有一个例子 { "businesses": [ { "id": "4jW-ZDeCPIl9aXvTWcATlA", "alias": "the-delaney-hotel-orlando", "name": "T

我正在尝试解码Yelp的JSON。文件中有一个嵌套的
类别数组
。一些企业有1个,其他企业可能有3个

这里有一个例子

{
"businesses": [
    {
        "id": "4jW-ZDeCPIl9aXvTWcATlA",
        "alias": "the-delaney-hotel-orlando",
        "name": "The Delaney Hotel",
        "image_url": "https://s3-media2.fl.yelpcdn.com/bphoto/fikUF4yC5J63f3EOCZ8uOw/o.jpg",
        "is_closed": false,
        "url": "https://www.yelp.com/biz/the-delaney-hotel-orlando?adjust_creative=s-hyKAjsx6P4UW-uqMn7aQ&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=s-hyKAjsx6P4UW-uqMn7aQ",
        "review_count": 13,
        "categories": [
            {
                "alias": "hotels",
                "title": "Hotels"
            },
            {
                "alias": "venues",
                "title": "Venues & Event Spaces"
            }
        ],
        "rating": 5.0,
        ...etc
    }
    
]
我的数据模型是这样建立的

struct BusinessesResponse: Codable {
    enum CodingKeys: String, CodingKey {
        case restaurants = "businesses"
    }

    let restaurants: [RestaurantResponse]
}

struct RestaurantResponse: Codable, Identifiable, Equatable {
    let id: String
    var name: String
    var image_url: String
    var is_closed: Bool
    var review_count: Int
    var rating: Double
    var distance: Double
    var price: String?
    var display_phone: String?
    var categories: [HotelCategory]
    var coordinates: HotelCoordinates
    var location: HotelLocation
    var transactions: [String]   
}

struct HotelCategory: Hashable, Codable {
    var title: String
}

struct HotelCoordinates: Hashable, Codable {
    var latitude: Double
    var longitude: Double
}

struct HotelLocation: Hashable, Codable {
    var address1: String
    var city: String
    var state: String
    var zip_code: String
}
我能够显示
类别
数组中除第一对之外的所有内容。我猜我需要设置一个
ForEach
语句来显示该数组中的所有可用信息,但我不确定如何正确设置

这是我目前的缩写形式

var category: [HotelCategory]


var body: some View {
    HStack {
       Text("\(category[0].title)")
    }
 } 

显然,这只会返回嵌套数组的第一个子数组。如何动态地解释具有多个子元素的嵌套数组,然后显示它们?

您可以通过以下方式使用
ForEach

ForEach(category, id: \.self) { category in
    HStack {
        Text("\(category.title)")
    }
}
注意:如果您不确定类别是否唯一,最好将
HotelCategory
Identifiable
一致,并使用
id:\.id


我还建议遵循约定,使用复数名称命名数组,即:

var categories: [HotelCategory] // instead of `category`