簡體   English   中英

將數組數據模型轉換為字典(Swift)

[英]Convert array data model to dictionary (swift)

資料模型

class DataCart {
   var icon: UIImage?
   var cartId: String
   var price: Int
   var productName: String
   var quantity: Int


init(icon: UIImage?, cartId: String, price: Int, productName: String, quantity: Int){
    self.icon = icon
    self.cartId = cartId
    self.price = price
    self.productName = productName
    self.quantity = quantity

  }
}

字典

var cart = [DataCart]()

"products": [[
    "productName": "Photobook", //"dataCart.productName"
    "quantity": 2,   //"dataCart.quantity"
    "price": "5000.00",  //"dataCart.price"
    "pages": 40
    ],[
    "productName": "Photobook2",
    "quantity": 5,
    "price": "7000.00",
    "pages": 30
    ]]

for dataCart in cart {
........
}

我從數據模型中排列了一個數組,希望將其顯示為字典,但是我很困惑地對其進行更改。 如何將購物車的數組(DataCart)轉換為字典?

在班級進行轉換是個好習慣。

因此,將來如果您有更多的鍵,則只需要在類級別進行更改,而不必在使用相同鍵的所有位置進行更改。

在類中添加一個計算的屬性dictionayDataCart ,如下所示。 還添加一種方法“ convertDataCartArrayToProductsDictionary: ”,該方法會將您的對象數組轉換為字典。

 class DataCart {
        var icon: UIImage?
        var cartId: String
        var price: Int
        var productName: String
        var quantity: Int


        init(icon: UIImage?, cartId: String, price: Int, productName: String, quantity: Int){
            self.icon = icon
            self.cartId = cartId
            self.price = price
            self.productName = productName
            self.quantity = quantity

        }

        var dictionaryDataCart : [String : AnyObject] {

            var objDict : [String : AnyObject]!

            if let icon = self.icon {
                objDict["icon"] = icon;
            }

            objDict["cartId"] = self.cartId;
            objDict["price"] = price;
            objDict["productName"] = productName;
            objDict["quantity"] = quantity;

            return objDict;
        }

        class func convertDataCartArrayToProductsDictionary(arrayDataCart : [DataCart]) -> Dictionary<String,AnyObject> {
            var arrayDataCartDictionaries : Array<Dictionary<String,AnyObject>> = Array()
            for objDataCart in arrayDataCart {
                arrayDataCartDictionaries.append(objDataCart.dictionary);
            }
            return ["products" : arrayDataCartDictionaries];
        }

        }

使用方法如下。

let arrayDataCarts : [DataCart] = //value of your array
//pass it to class function and you will get your result

let productsDict = let productsDict = DataCart.convertDataCartArrayToProductsDictionary(arrayDataCarts);
    var allDictionaries : [[String : AnyObject]]//array of all dictionaries.

    func convertArrayToDictionaries([DataCart]) {
       for data in DataCart {
          let  dictionary = [
             "icon" : data.icon,
             "cartId" : data.cartId,
             "price" : data.price,
             "productName" : data.productName,
             "quantity" : data.quantity
          ]
          allDictionaries.append(dictionary)
       }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM