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