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