当前位置 : 主页 > 手机开发 > 其它 >

swift – 在Firebase中增加数据点的最简单方法?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我在Firebase中增加一段数据时遇到了麻烦. Firebase { clickedCounter: 0} 这是我的代码: @IBAction func plus(sender: UIButton) { FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap:
我在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!
        }
    }

我的第一个警告是:

从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)")         
})

如果多个用户经常更新,也可以利用事务块.

网友评论