我一直在尝试在我的应用上实现“关注”功能。实际上,当用户点击“关注”按钮时,我们运行runTransactionBlock
来更新我们存储在Firebase数据库中的整数值,以供用户及其关注的帐户使用。 问题是我能够为用户更新计数器(比如下面的例子中的John),但是我无法为我正在关注的用户更新计数器(例如下面的示例中的olivia)。
目前,Firebase节点看起来像这样:
user_profiles{
UID1:{
name: john
following: 1 //code will update for my account
followers: 0
},
UID2:{
name: olivia
following: 0
followers: 0 //code will not update count for person i am trying to follow
我引用了以下内容,但是我仍然面临着让它工作的问题。如果有人可以请一瞥并指出我正确的方向,我将不胜感激。
https://www.firebase.com/docs/ios/guide/saving-data.html
Firebase database help - Swift
Upvote/Downvote system within Swift via Firebase
var guestUIDToPass = String()
var loggedInUser = AnyObject()
@IBAction func didTapFollow(sender: AnyObject) {
following()
}
func following() {
self.loggedInUser = FIRAuth.auth()?.currentUser
//updating count for user, works perfectly
self.databaseRef.child("user_profiles").child(self.loggedInUser.uid).child("following").runTransactionBlock({
(currentData:FIRMutableData!) in
var value = currentData.value as? Int
if (value == nil) {
value = 0
}
currentData.value = value! + 1
return FIRTransactionResult.successWithValue(currentData)
})
//updating count for person user is following, doesn't update firebase
self.databaseRef.child("user_profiles").child("\(self.guestUIDToPass)").child("followers").runTransactionBlock({
(currentData:FIRMutableData!) in
var value = currentData.value as? Int
if (value == nil) {
value = 0
}
currentData.value = value! + 1
return FIRTransactionResult.successWithValue(currentData)
})
}
答案 0 :(得分:3)
尝试: -
let prntRef = FIRDatabase.database().reference().child("user_profiles").child(whomIFollowedUID).child("following")
prntRef.runTransactionBlock({ (following) -> FIRTransactionResult in
if let followNum = following.value as? Int{
following.value = followNum + 1
return FIRTransactionResult.successWithValue(following)
}else{
return FIRTransactionResult.successWithValue(following)
}
}, andCompletionBlock: {(error,completion,snap) in
print(error?.localizedDescription)
print(completion)
print(snap)
if !completion {
print("The value wasn't able to Update")
}else{
//Updated
}
})