将复杂的结构保存到firebase

Ant*_*ear 2 ios firebase swift firebase-realtime-database

我有一些非常复杂的结构,由自定义UIViews和其他快速对象组成.我想在Firebase上保存它们的实例.问题是Firebase不会接受我的类型,所以我可以编写代码来转换为更原始的类型并返回,但这将是非常复杂和乏味的.我想知道是否有一些方法可以保存整个类作为数据,二进制或字符串上传它,并在以后检索和解码它?或任何其他建议

Vla*_*hev 5

来自文档:

您可以传递set字符串,数字,布尔值,null,数组或任何JSON对象

所以,你需要编写自己的转换器.

只需使用3种方法创建structs/ classes用于对象:

// example with 2 fields: Int and String

struct ItemFromFirebase {
    let type: Int
    let name: String

    // manual init
    init(type: Int, name: String) {
       self.type = type
       self.name = name
    }

    // init with snapshot
    init(snapshot: DataSnapshot) {
         let snapshotValue = snapshot.value as! [String: AnyObject]
         type = snapshotValue["type"] as! Int
         name = snapshotValue["name"] as! String
    }

    // function for saving data
    func toAnyObject() -> Any {
        return [
            "type": type,
            "name": name
        ]
     }
 }
Run Code Online (Sandbox Code Playgroud)

这是简单类型的例子.您只需要重写功能toAnyObjectinit您的需求.

希望能帮助到你