我想做的是从firebase提取数据,但是该数据为零,因为用户尚未将其数据发送到firebase,因此当他进入应该显示其数据的视图控制器时,编译器会出错。我该如何解决这个错误?我尝试添加警报,但仍然无法正常工作。
func getData(){
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("users")
.queryOrdered(byChild: "uid")
.queryEqual(toValue:userID)
.observe(.value) { (snapshot, error) in
if error == nil{// alert} elses{
if let data = snapshot.value as? NSDictionary {
if snapshot.exists() {
for a in ((snapshot.value as AnyObject).allKeys)!{
let users = data.value(forKey:a as! String) as! NSDictionary
let address = users.value(forKey:"Address") as! NSDictionary
self.lblAddressNickname.text = address.value(forKey:"addressNickname") as? String
}
}
}
}
}
}
答案 0 :(得分:0)
因此,到目前为止,我理解了以下问题:当Firebase中没有数据时,您是否有从Firebase中获取数据的问题,然后警报会出现,并将其重定向到新的控制器?
那么根据我的理解,如果我对理解事物有任何疑问,我会给出答案,然后回复我?
首先,您必须检查特定用户在firebase数据库中是否有任何数据,因此如果没有数据,则警报功能将调用
if let data == data
{
fetch_logic is here
}
else
{
let alert = UIAlertController(title:"Add Data",message:"",preferredStyle: .alert)
let action = UIAlertAction(title: "Add Button", style: .default) { (UIAlertAction) in
}
alert.addAction(action)
present(alert,animation:true,completion:true)
}