如何解析 Firebase FDataSnapshot 对象?
Posted
技术标签:
【中文标题】如何解析 Firebase FDataSnapshot 对象?【英文标题】:how to parse a firebase FDataSnapshot object? 【发布时间】:2014-08-04 04:09:16 【问题描述】:我的代码从 firebase 检索结构化数据,但我不清楚如何从 firebase 数据对象中获取每个值。我在***上没有找到答案,我在这里为其他初学者发布问题和答案。
我的 firebase 快照对象值:
"08AD8779-6EEB-4449-BC77-78A661ADA72E" =
field1 = "to device id";
field2 = "text message";
;
"EB841471-618C-4C52-8AA0-C20AD2C947AC" =
field1 = "to device id";
field2 = "text message";
;
如何将设备ID(例如“08AD8779-6EEB-4449-BC77-78A661ADA72E”)和“field1”和“field2”的值分配给NSString变量?
【问题讨论】:
您使用什么语言工作?如果您共享用于从 Firebase 获取数据的代码,也可能会有所帮助。 每个 SDK 的指南中都包含检索数据,例如:web、ios、android 和 REST。您是否遇到了此处未涵盖的问题? 加藤,我在ios SDK指南上花了很多时间,很清楚如何获取数据(对象)的快照,但没有找到如何提取每个字段的值目的。我从 firebase 示例代码中挖掘了答案,在 *** 上发布了问题/答案,以便下一个人更容易找到。 【参考方案1】:以下是对我有用的代码:
-(void)readFirebaseData
// Read data and react to changes
[self.myRootRef observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot)
for (FDataSnapshot* childSnap in snapshot.children)
NSString* otherDeviceName = childSnap.name;
NSLog(@"otherDeviceName -> %@", childSnap.name);
NSLog(@"otherDeviceField1 -> %@", childSnap.value[@"field1"]);
NSLog(@"otherDeviceField2 -> %@", childSnap.value[@"field2"]);
];
【讨论】:
您好,您知道如何快速实现这一目标吗? 嗨 Rom_j,我不知道如何在 swift 中做到这一点(我还没有开始学习 swift)。 这个答案已经过时了【参考方案2】:希望这会有所帮助。FDataSnashot 上没有 name 属性,因此将其假定为带有键名的值。
for childSnap in snapshot.children.allObjects as [FDataSnapshot]
let otherDeviceName = childSnap.value["name"] as NSString
println("otherDeviceName -> \(otherDeviceName)");
let field1 = childSnap.value["field1"]
let field2 = childSnap.value["field2"]
println("otherDeviceField1 -> \(field1)");
println("otherDeviceField2 -> \(field2)");
【讨论】:
【参考方案3】:其他答案还可以,但如果有人想要一个带有错误识别的干净结构:SnapshotParser
下面的代码对于获得一个完全工作的 swift 表示是必要的:
func main()
let devices=SnapshotParser().parseAsList(snap: Snapshot, type: Device.self)
class Device: ParsableSnapshot
var id: String?
var field1:String?=nil
var field2:String?=nil
required init()
func bindProperties(binder: SnapshotParser.Binder)
binder.bindField(name: "id", field: &id)
binder.bindField(name: "field1", field: &field1)
binder.bindField(name: "field2", field: &field2)
【讨论】:
以上是关于如何解析 Firebase FDataSnapshot 对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Kotlin 在 Android 中处理从 Firebase Remote Config 解析 JSON 的效果方式?
无法从“src\containers\Login.js”解析“firebase”
在 Firebase 云函数中包含异步函数(eslint“解析错误:意外的令牌函数”)