【问题标题】:Retrieving Data using Firebase Swift使用 Firebase Swift 检索数据
【发布时间】:2016-08-12 06:32:48
【问题描述】:

我将 Firebase 用于我的 Swift iOS 应用程序。我发现 Firebase 指南上的检索数据教程有点混乱,我不知道为什么当我尝试访问数据库中的现有值时会导致 nil 值。

这是我目前所拥有的:

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

这是打印快照的结果。

SNAPSHOT:  {
    1 = {
        fbid = 1;
        firstName = Michelle;
        friendlist =         {
            9 = "Kevin C";
        };
        lastName = C;
        profilepicurl = "https:;
        uid = "facebook:1";
    };
}

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

 firstName = snapshot.value.objectForKey("firstName") as! String

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

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    您的FDataSnapshot 不包含子firstName。它只包含一个子 1

    这是因为您正在执行查询,然后请求一个值。因为一个查询可以有很多结果,所以它返回一个结果列表。即使只有一个结果,它仍然是一个 1 的列表。

    解决方案是循环遍历孩子:

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

    【讨论】:

    • 感谢您的快速回答,我会尝试一下并回复您。
    • 接受您的回答作为解决方案。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多