Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI中的Firebase init Datasnapshot_Ios_Swift_Firebase_Firebase Realtime Database_Swiftui - Fatal编程技术网

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";
}