我使用以下查询来获取下面的快照。
dbRef.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in })
但我无法弄清楚如何迭代孩子们的价值观"用户名" (即比尔,比利,比利金斯),因为他们都有相同的密钥("用户名")。我试图提取所有名称并将它们放在一个名字数组中。
Snap (users) {
fDrzmwRUt2guh3O8pc792ipyEqA3 = {
username = bill;
};
qyQkIOxSpXgQoUoh0QNvPlkQ1Mp1 = {
username = billy;
};
edSk54xSpXgQoYoh0QNvOlkQ1Mp3 = {
username = billykins;
};
}
这是我的函数,它获取快照并尝试迭代它。但是,循环崩溃了:
func findUsers(text: String) {
print("search triggered")
dbRef.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in
print(snapshot)
for i in snapshot.children{
let value = snapshot.value as! Dictionary<String,String>
let username = value["username"]
print(username)
self.userList.append(username!)
print(self.userList)
}
}) { (error) in
print("searchUsers \(error.localizedDescription)")
}
}
这是日志的一小部分。发帖太久了:
0x1002cg360 <+272>: adr x9, #268929 ; "value type is not bridged to Objective-C"
0x1002cg364 <+276>: nop
0x1002cg368 <+280>: str x9, [x8, #8]
-> 0x1002cg36c <+284>: brk #0x1
0x1002cg370 <+288>: .long 0xffffffe8 ; unknown opcode
答案 0 :(得分:0)
这是我正在寻找的解决方案。我需要遍历大快照以将子快照提取到数组中,然后按值循环子快照以获取用户名:
func findUsers(text: String) {
print("search triggered")
dbRef.child("users").queryOrdered(byChild: "username").queryStarting(atValue: text).queryEnding(atValue: text+"\u{f8ff}").observe(.value, with: { snapshot in
print(snapshot)
if ( snapshot.value is NSNull ) {
print("not found")
} else {
var blaArray = [FIRDataSnapshot]()
for child in snapshot.children {
let snap = child as! FIRDataSnapshot //downcast
blaArray.append(snap)
}
for child in blaArray {
let dict = child.value as! NSDictionary
let username = dict["username"]!
print(username)
}
}) { (error) in
print("searchUsers \(error.localizedDescription)")
}
}