我在Firebase中增加一段数据时遇到了麻烦. Firebase { clickedCounter: 0} 这是我的代码: @IBAction func plus(sender: UIButton) { FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap:
Firebase {
clickedCounter: 0
}
这是我的代码:
@IBAction func plus(sender: UIButton) {
FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap: FIRDataSnapshot) in
let value = FIRDatabase.database().reference().child("clickedCounter") as? NSNumber
let increment = ((value?.intValue)! + ((1 as? NSNumber)?.intValue)!) as? NSNumber
FIRDatabase.database().reference().child("clickedCounter").setValue()
self.clickLabel.text = snap.value?.description as String!
}
}
我也尝试过:
@IBAction func plus(sender: UIButton) {
FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap: FIRDataSnapshot) in
FIRDatabase.database().reference().child("clickedCounter").setValue((snap.value?.description)! + 1)
self.clickedLabel.text = snap.value?.description as! String!
}
}
我的第一个警告是:
从Int32转换为NSNumber总是失败
从NSNumber到NSNumber的条件演员总是成功的
从FIRDatabaseReference转换为NSNumber总是失败
在我运行它之后,我得到了关于let increment的错误….:线程1:EXC_BAD_INSTRUCTION
对于我的第二个错误是:
二进制运算符不能应用于String和Int类型的操作数
>当我认为我在Firebase中将其定义为Int时,我很困惑我的snap.value?.description是一个字符串.
>当事情总是成功时,为什么会收到警告?
>有更好的方法吗?
谢谢!
为什么不(v2.x Firebase代码,但你明白了)counterRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
let valString = snapshot.value
var value = valString.intValue
value = value + 1
counterRef.setValue("\(value)")
})
如果多个用户经常更新,也可以利用事务块.
