将复杂结构保存到火力基地



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

来自文档:

您可以传递设置字符串,数字,布尔值,空值,数组或任何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
]
}
}

这是简单类型的示例。您只需要重写toAnyObject的函数,并init您的需求。

希望对你有帮助

最新更新