Swift 无法检查查询结果是否为零
我有一个查询,检查子“访问者”中是否存在电话号码。如果电话号码存在,它会将子项的键添加到变量Swift 无法检查查询结果是否为零,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,我有一个查询,检查子“访问者”中是否存在电话号码。如果电话号码存在,它会将子项的键添加到变量visitorID 如果visitorID!=“我得到了做我想做的事情的代码,但是当visitorID==”我无法得到做任何事情的代码。以下是我最大的努力: ref?.child("visitors").queryOrdered(byChild: "phoneNumber").queryEqual(toValue: phoneNumber).observeSingleEvent(of: .value, w
visitorID
如果
visitorID!=“
我得到了做我想做的事情的代码,但是当visitorID==”
我无法得到做任何事情的代码。以下是我最大的努力:
ref?.child("visitors").queryOrdered(byChild: "phoneNumber").queryEqual(toValue: phoneNumber).observeSingleEvent(of: .value, with: { (snapShot) in
if let snapDict = snapShot.value as? [String:AnyObject]{
var visitorID = String()
for each in snapDict{
let key = each.key as! String
visitorID = key
}
if visitorID != "" {
//Do something
} else {
//Do something else
}
}
}, withCancel: {(Err) in
print(Err.localizedDescription)
})
如果要执行查询并确定是否有任何结果,则需要snapshot.exists
ref?.child("visitors").queryOrdered(byChild: "phoneNumber").queryEqual(toValue: phoneNumber).observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists() {
print("found at least one")
//do something with snapshot
} else {
print("non found, returning")
return
}
}, withCancel: {(Err) in
print(Err.localizedDescription)
})
或
为什么在循环的每次迭代中都给同一个变量赋值,而不使用该变量做任何事情,是否有意只保留最后一个值(如果这样做可以更有效)?代码实际上没有做任何事情。您正在查询电话号码,如果找到任何匹配的节点,它们将在快照中返回。它们都有一个键,因为它们存在,所以永远不会出现键是空字符串的情况。还有上面@JoakimDanielson所说的,您正在读取返回的每一个密钥,并将其分配给visitorID,但从未对其进行任何处理。
ref?.child("visitors").queryOrdered(byChild: "phoneNumber").queryEqual(toValue: phoneNumber).observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists() == false {
print("none found, returning")
return
}
//do something with snapshot