1
在我的iOS应用中,用户可以通过搜索唯一的用户名来添加好友。如何取消firebase观察单个事件数据库调用
用户在textField中键入用户名,我有一个textFieldDidChange通知,每当文本更改时触发该通知。
在该方法中,我调用下面的Firebase方法来检查用户名是否存在。
func searchFor(_ username: String) {
guard let uid = FIRAuth.auth()?.currentUser?.uid else {
return
}
let lowercaseUsername = username.lowercased()
let ref = FIRDatabase.database().reference()
ref.child(FirebaseDatabaseBranchNames.usernames.rawValue).child(lowercaseUsername).observeSingleEvent(of: .value, with: { [unowned self](snapshot) in
if snapshot.exists() {
if let usernameUid = snapshot.value as? String {
self.isUserAlreadyAFriend(ref, uid: uid, usernameUid: usernameUid)
}
} else {
// username doesn't exist
}
}, withCancel: nil)
}
如何在再次执行此操作前取消此方法?
一如既往,感谢弗兰克(需要有这个地方,我可以复制和粘贴:)) – Edward
嗨@Frank假设你不想使用观察,而不是observeSingleEvent为了能够使用手柄删除它 – Edward
这个问题具体是关于'observeSingleEvent',所以这就是我的回答。在这种情况下,分离侦听器的用处是相当有限的,但它确实涵盖了一些边缘情况。 –