将复杂的结构保存到 firebase

Posted

技术标签:

【中文标题】将复杂的结构保存到 firebase【英文标题】:Saving a complex struct to firebase 【发布时间】:2017-07-11 12:03:06 【问题描述】:

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

【问题讨论】:

我从未尝试过,但这看起来很有希望:***.com/questions/29599005/… 【参考方案1】:

来自documentation:

您可以传递设置字符串、数字、布尔值、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
        ]
     
 

这是简单类型的示例。您只需根据需要重写函数 toAnyObjectinit

希望对你有帮助

【讨论】:

嘿,这很有帮助,但我想我正在尝试将数据保存到文件中,然后将该文件上传到 firebase。正在努力,但有一些issues rn @AntersBear 我不确定这是否是最佳实践,但这是您的选择。它可以工作

以上是关于将复杂的结构保存到 firebase的主要内容,如果未能解决你的问题,请参考以下文章

将数据结构 c++ 保存到磁盘

使用python将复杂对象保存到dynamoDb

编写一个复杂的自定义结构数组到文件 Objective C

将复杂结构编组到 C#

php 内存原理

将结构保存到 UserDefaults