将数组数据模型转换为字典(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)转换为字典?
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)
}
}
最好在 class 级别进行转换。
所以以后如果你有更多的钥匙,你只需要在class级别进行更改,而不是在所有使用过相同的地方进行更改。
在class中添加一个计算得到的属性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);
数据模型
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)转换为字典?
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)
}
}
最好在 class 级别进行转换。
所以以后如果你有更多的钥匙,你只需要在class级别进行更改,而不是在所有使用过相同的地方进行更改。
在class中添加一个计算得到的属性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);