2016-02-05 41 views
2

數據模型轉換陣列數據模型到字典(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)轉換爲字典?

回答

2
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) 
     } 
} 
+0

爲什麼它顯示「讓字典行中沒有更多上下文的表達式類型不明確」? @ NSGangster –

+0

現在它的一切都很好,只需添加[String:AnyObject]讓字典。謝謝你btw! –

3

在課堂上進行轉換是個好習慣。

所以在未來如果你有更多的鑰匙,你只需要改變在課堂上的水平,而不是改變你使用相同的所有地方。

在課堂中添加一個計算出的屬性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);