将[Drink]对象数组转换为json对象以快速保存到Firebase DB?

问题描述 投票:0回答:1

目标:我有一个[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所需的值结构?

swift firebase firebase-realtime-database
1个回答
0
投票
[如果您需要按照问题标题所述将其转换为JSON,则可以使用Codable协议(或Codable的类型别名。这使得在模型与json之间以及向后转换之间的转换非常容易。

这里是一个单元测试示例,用于演示两种方法。我将其切换到一个结构只是为了获得免费的初始化,使其更短,并且不需要Decodable & Encodable,仅在第二个单元测试中进行了比较。

© www.soinside.com 2019 - 2024. All rights reserved.