Ios SwiftUI中的Firebase init Datasnapshot
我有以下获取代码:Ios SwiftUI中的Firebase init Datasnapshot,ios,swift,firebase,firebase-realtime-database,swiftui,Ios,Swift,Firebase,Firebase Realtime Database,Swiftui,我有以下获取代码: func fetchGroups(userId: String) { self.playerInGroupRef.child(userId).queryOrderedByValue().queryEqual(toValue: true).observeSingleEvent(of: .value, with: { (snapshot) in self.groups = [] if snapshot.value is NSNull {
func fetchGroups(userId: String) {
self.playerInGroupRef.child(userId).queryOrderedByValue().queryEqual(toValue: true).observeSingleEvent(of: .value, with: { (snapshot) in
self.groups = []
if snapshot.value is NSNull {
print("NIL... User is not in any Groups")
} else {
print("Group Count: ", snapshot.childrenCount)
for item in snapshot.children {
let groupID = (item as! DataSnapshot).key
self.groupRef.child(groupID).observeSingleEvent(of: .value, with: { (snap) in
if let snap = item as? DataSnapshot,
let group = Group(snapshot: snap) {
self.groups.append(group)
}
print("Snap value: ", snap)
})
}
}
}) { (error) in
print(error.localizedDescription)
}
}
如果组对象的初始值为:
init(id: String, name: String) {
self.id = id
self.name = name
}
这是init DataSnapshot:
init?(snapshot: DataSnapshot) {
guard
let value = snapshot.value as? [String: AnyObject],
let name = value["GroupName"] as? String
else {
print("*************************************************")
print("GroupStore init?(snapshot: DataSnapshot) ERROR!!!")
print("*************************************************")
return nil
}
self.id = snapshot.key
//
self.name = name
}
我的问题是,为什么在调用代码的以下部分时总是调用else子句
if let snap = item as? DataSnapshot,
let group = Group(snapshot: snap) {
self.groups.append(group)
}
我希望Datasnapshot按其应有的方式获得init,并创建组对象实例。。。但是它继续执行else语句,并返回nil
print("Snap value: ", snap)
上述输出看起来是正确的输出:
Snap value: Snap (89000) {
GroupName = "Group Admin";
}