我在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)") })
如果多个用户经常更新,也可以利用事务块.