gpt4 book ai didi

swift - Firebase 2.0 - 从 FIRDataSnapshot 读取数据不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 05:50:22 24 4
gpt4 key购买 nike

Iv 有一个搜索栏,当您键入它时,它会在数据库中搜索该用户的用户名。查找用户名的代码有效,但是当我尝试读取特定值时它崩溃了。这是代码

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

Database.child("users").queryOrderedByChild("username").queryEqualToValue(searchText).observeSingleEventOfType(.Value, withBlock: { snapshot in

print(snapshot)
print(snapshot.value!["first_name"] as? String)
print(snapshot.value!["last_name"] as? String)
print(snapshot.value!["username"] as? String)
print(snapshot.value!["profile_picture_url"] as? String)
})
}

打印快照的结果是

Snap (users) {
12345UIDEXample = {
"first_name" = Bob;
"last_name" = Someone;
"profile_picture_url" = "exampleurl.com";
username = bobby;
};
}

但是当我尝试访问时

snapshot.value!["first_name"] as? String

它返回 nil 并崩溃?为什么如果它在 json 中清楚地显示它返回了数据但不让我提取值呢?

最佳答案

您的快照包含第一级子级的值“12345UIDEXample”。

要访问您要查找的数据,您可以使用一个循环遍历作为 FIRDataSnapshot 转换的子项。

for child in snapshot.children.allObjects as! [FIRDataSnapshot]{
let firstname = child.value!["first_name"] as? String
}

在此示例中,子值将仅返回对象的另一个快照,如下所示:

Snap(12345UIDEXample) {
"first_name" = Bob;
"last_name" = Someone;
"profile_picture_url" = "exampleurl.com";
username = bobby;
};

但是,您将能够像之前那样访问所需的字段。

关于swift - Firebase 2.0 - 从 FIRDataSnapshot 读取数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38135714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com