加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:28:45 所属栏目:百科 来源:网络整理
导读:我在Firebase中增加一段数据时遇到了麻烦. Firebase { clickedCounter: 0} 这是我的代码: @IBAction func plus(sender: UIButton) { FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap: FIRDataSnapshot) in l
我在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)")         
})

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读