Создать массив значений из модели в строку в Swift - PullRequest
0 голосов
/ 06 мая 2020

Я хочу создать данные типа enter image description here

Из модели, например enter image description here

, но данные, которые я получаю, похожи на это enter image description here

как я могу получить такую ​​структуру данных (вверху)? clean нет названия модели и дополнительных данных в данных

Примечание: я использую метод create value, подобный этому

        for i in 0 ..< self.dataProduct.count {
        let id_sell = "\(self.dataProduct[i].seller_id ?? 0)"
        let origin = self.dataProduct[i].origin ?? 0
        let product = self.dataProduct[i].product ?? []

        var dataItem = [DataCheckoutMitras.ProductItemCheckout]()
        var itemMitra : DataCheckoutMitras?
        var dataCourierSelected : CourierObject?
        for x in 0 ..< product.count {
            var item : DataCheckoutMitras.ProductItemCheckout?

            item = DataCheckoutMitras.ProductItemCheckout(product_id: product[x].product_id ?? 0,
                                                          name: product[x].name ?? "",
                                                          price: product[x].price ?? 0,
                                                          subTotal: product[x].subTotal ?? 0,
                                                          quantity: product[x].quantity ?? 0,
                                                          weight: product[x].weight ?? 0,
                                                          origin_item: origin,
                                                          notes: product[x].notes ?? "")

            dataItem.append(item!)
        }

        for x in 0 ..< self.id_seller.count {
            if id_sell == self.id_seller[x] {
                dataCourierSelected = self.dataKurir[x]
            }
        }

        itemMitra = DataCheckoutMitras(origin: origin, select_price_courier: dataCourierSelected, items: dataItem)
        mitras.append(itemMitra!)
    }

1 Ответ

2 голосов
/ 06 мая 2020

Проблема, с которой вы столкнулись, заключается в том, что вы печатаете определение своей структуры. Вам нужен JSON, для этого вам необходимо:

  1. Реализовать протокол Codable в обоих struct Это также относится к вашему CourierObject

    
    struct DataCheckoutMitras: Codable {
        let origin: Int?
        let items: [ProductItemCheckout]?
    
        struct ProductItemCheckout: Codable {
            let product_id : Int?
            let name : String?
        }
    }
    
  2. закодировать структуру в JSON данные, используя JSONEncoder

    let encodedJSONData = try! JSONEncoder().encode(mitras)
    
  3. преобразовать JSON в строку

    let jsonString = String(data: encodedJSONData, encoding: .utf8)
    print(jsonString)
    
...