【问题标题】:Convert array data model to dictionary (swift)将数组数据模型转换为字典(swift)
【发布时间】:2016-05-15 02:35:37
【问题描述】:

数据模型

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)转换为字典?

【问题讨论】:

    标签: ios arrays swift dictionary datamodel


    【解决方案1】:
        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)
           }
     }
    

    【讨论】:

    • 为什么它在 let 字典行中显示“表达式类型不明确,没有更多上下文”? @NSGangster
    • 现在一切都好,只需添加 [String : AnyObject] 即可让字典。顺便说一句,谢谢!
    【解决方案2】:

    在班级级别进行转换是一种很好的做法。

    所以将来如果你有更多的钥匙,你只需要在班级级别进行更改,而不是在所有使用过相同的地方都进行更改。

    在类中添加一个计算属性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);
    

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2018-11-22
      • 2018-01-08
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多