使用Firebase Swift检索数据

Mis*_*shy 1 ios firebase swift firebase-realtime-database

我在我的Swift iOS应用程序中使用Firebase.我发现Firebase指南中的检索数据教程有点令人困惑,我不确定为什么当我尝试访问数据库中的现有值时会得到nil值.

这是我到目前为止:

usersRef.queryOrderedByChild("fbid").queryEqualToValue(userId).observeSingleEventOfType(.Value, withBlock:{ snapshot in
                        print("SNAPSHOT: ",snapshot.value)
Run Code Online (Sandbox Code Playgroud)

这是打印快照的结果.

SNAPSHOT:  {
    1 = {
        fbid = 1;
        firstName = Michelle;
        friendlist =         {
            9 = "Kevin C";
        };
        lastName = C;
        profilepicurl = "https:;
        uid = "facebook:1";
    };
}
Run Code Online (Sandbox Code Playgroud)

但是,下面的行导致:
致命错误:在展开Optional值时意外地发现nil

 firstName = snapshot.value.objectForKey("firstName") as! String
Run Code Online (Sandbox Code Playgroud)

我想检索用户的所有值(firstName,profilepicurl,friendlist等)并将它们存储在变量中.这似乎很简单,但也许我错过了一些东西.任何帮助,将不胜感激.

Fra*_*len 6

FDataSnapshot不包含孩子firstName.它只包含一个孩子1.

这是因为您正在执行查询然后要求输入值.由于查询可以包含许多结果,因此它会返回结果列表.即使只有一个结果,它仍然是1的列表.

解决方案是循环子女:

usersRef.queryOrderedByChild("fbid")
        .queryEqualToValue(userId)
        .observeSingleEventOfType(.Value, withBlock:{ snapshot in
            for child in snapshot.children {
                print("Loading group \(child.key!)") 
            }
})
Run Code Online (Sandbox Code Playgroud)