Используйте значение меток в массиве внутри массива и создайте forEach - PullRequest
0 голосов
/ 21 октября 2019

У меня есть JSON аналогичного плана

[
{
    "id": "registration",
    "title": "auto",
    "info": "under update",
    "brand": "TESLA",
    "model": "MODEL X",
    "make_year": 2017,
    "properties": [
        {
                "id": 1,
                "icon": "ic_rgb",
                "label": "color",
                "value": "red"
            },
            {
                "id": 2,
                "icon": "ic_car",
                "label": "tipe",
                "value": "car"
            },
            {   "id": 3,
                "icon": "ic_fuel",
                "label": "fuel",
                "value": "-"
            },

            ...

        ],
    },
{
    "id": "firstRegistration",
    "title": "auto",
    "info": "under update",
    "brand": "TESLA",
    "model": "MODEL X",
    "make_year": 2017
},
{
    "id": "secondRegistration",
    "title": "auto",
    "info": "under update",
    "brand": "TESLA",
    "model": "MODEL X",
    "make_year": 2017,
}
]

И моя модель:

...
    struct Unicards: Hashable, Codable, Identifiable {
    var id: String
    var title: String?
    var info: String?
    var brand: String?
    var model: String?
    var make_year: Int?
    var messege: String?
    var messege_color: String?
    var price: String?
    var price_currency: String?
    var price_tooltip: String?


    var properties: [HPropert]?
    struct HPropert: Hashable, Codable, Identifiable {

        var id: Int
        var icon: String?
        var label: String?
        var value: String?

    }
    }

Вот что я делаю http://joxi.ru/Q2KLXvYHLDz9aA

Яиспользовать ScrollView (Axis.Set.horizontal) и элемент forEach, но не могу зациклить элемент по data.properties.count

Я уже являюсь парсом JSON, но не могу зациклить элемент по количеству.

Можете ли выпожалуйста, помогите мне с примером?

Как я могу попробовать


var data2: Unicards.HPropert

        HStack {

            ForEach(data2) { item in <--\\Generic parameter 'Data' could not be inferred
                VStack {

                                Image(image)
                                    .resizable()
                                    .scaledToFit()
                                    .frame(width: 34, height: 34)


                                VStack {

                                    Text(self.data2.label ?? "")
                                        .font(.system(size: 14))
                                        .fontWeight(.medium)
                                    Text(self.data2.value ?? "")
                                        .font(.system(size: 14))
                                }


                }
            }
    }

1 Ответ

0 голосов
/ 22 октября 2019

разрешено

1-й шаг -

var data2: Unicards  (your main data)

шаг 2, новая константа в вашем теле

 var body: some View {
let arrayWhatYouNeed = data2.propertie 

и не забудьте вернуть вам представление

return  HStack {
...

и теперь у вас есть, например,

return HStack {

        ForEach(arrayWhatYouNeed) { item in 
            VStack {

                            Image(image)
                                .resizable()
                                .scaledToFit()
                                .frame(width: 34, height: 34)


                            VStack {

                                Text(item.lable)
                                    .font(.system(size: 14))
                                    .fontWeight(.medium)
                                Text(item.value)
                                    .font(.system(size: 14))
                            }


            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...