目标:我有一个[Drink]
数组,希望将它们保存在posId
下的Firebase RDBS中。这样,Firebase保存的树结构将如下所示:
-drinks
-----posID-1
--------name
--------description
--------unitPrice
--------tags
-----------tag1
-----------tag2
模型类别Drink
class Drink {
var posId: String?
var name: String?
var description: String?
var tags: [String]?
var unitPrice: String?
init(dictionary: [String: Any]) {
self.posId = dictionary["posId"] as? String
self.name = dictionary["name"] as? String
self.description = dictionary["description"] as? String
self.unitPrice = dictionary["unitPrice"] as? String
self.tags = dictionary["tags"] as? [String]
}//end init
}//end class
将[Drink]
数组映射到Dictionary
并将输出打印到控制台的功能
func loadDrinks(){
print("drinksOrder count:\(drinksOrder.count)")
let drinksOrdered = Dictionary(uniqueKeysWithValues: drinksOrder.map {($0.posId, $0.self)})
print(drinksOrdered)
}//end func
输出:
[[Optional(“ 0009372”):vipeeps.Drink,Optional(“ 0009373”):vipeeps.Drink,可选(“ 0009374”):vipeeps.Drink]
[[问题:如何将Drink对象进一步映射到Dictionary键:保存到Firebase所需的值结构?
Codable
协议(或Codable
的类型别名。这使得在模型与json之间以及向后转换之间的转换非常容易。这里是一个单元测试示例,用于演示两种方法。我将其切换到一个结构只是为了获得免费的初始化,使其更短,并且不需要Decodable & Encodable
,仅在第二个单元测试中进行了比较。