我在增加 Firebase 中的数据时遇到问题。
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!
}
}
我的第一次警告是:
Cast from Int32 to NSNumber always fails
Conditional cast from NSNumber to NSNumber always succeeds
Cast from FIRDatabaseReference to NSNumber always fails
我运行后,出现错误let increment....
: Thread 1: EXC_BAD_INSTRUCTION
对于我的第二个错误是:
Binary operator + cannot be applied to operands of the type String and Int
我很困惑我的snap.value?.description
当我认为我在 Firebase 中将其定义为 Int 时,它是一个 String。
当某些事情总是成功时,为什么我会收到警告?
有一个更好的方法吗?
Thanks!
为什么不呢(v2.x Firebase 代码,但你明白了)
counterRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
let valString = snapshot.value
var value = valString.intValue
value = value + 1
counterRef.setValue("\(value)")
})
如果多个用户频繁更新,也可以利用交易块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)