我想从Firebase快照中获取数据并将其设置为我的Project中的变量。我得到了数据,但我不知道如何解析它,所以我可以设置它们。我正在尝试做一些类似于SwiftyJSON的API调用。
有没有办法从(ls)数组中解析和设置值,并将“fromId”,“text”,“toId”设置为每个节点的不同变量?
答案 0 :(得分:2)
尝试使用: -
FIRDatabase.database().reference().child("users/userID/ls").observeSingleEvent(of : .value, with : {(Snap) in
if let snapDict = Snap.value as? [String:AnyObject]{
for each in snapDict{
print("\(each.value["fromId"] as! String)")
}
}
})
答案 1 :(得分:0)
您应该能够将FIRDataSnapshot值转换为[String:Any]字典,然后使用“fromId”,“text”和“toId”键访问这些值,并将这些值分配给变量。
答案 2 :(得分:0)
简单的方法是:SnapshotParser
只需实施您的课程:
func main(){
let users=SnapshotParser().parseAsList(snap: Snapshot, type: User.self)
for user in users{
//do something with your object
}
}
class User: ParsableSnapshot {
var id:String?=nil
var email:String?=nil
var ls:[Ls]?=nil
required init(){}
func bindProperties(binder: SnapshotParser.Binder) {
binder.bindField(name: "id", field: &id)
binder.bindField(name: "email", field: &email)
binder.bindList(name: "ls", list: &ls)
}
}
class Ls: ParsableSnapshot {
var id:String?=nil
var fromId:String?=nil
var text:String?=nil
var told:String?=nil
required init(){}
func bindProperties(binder: SnapshotParser.Binder) {
binder.bindField(name: "id", field: &id)
binder.bindField(name: "fromId", field: &fromId)
binder.bindField(name: "text", field: &text)
binder.bindField(name: "told", field: &told)
}
}