Swift 3.2 iOS - 如何增加Firebase MutableData对象的NSNumber?

时间:2017-11-05 06:17:36

标签: ios swift firebase increment nsnumber

在Swift中,我理解NSNumbers是包含标量数字的容器。

InFirebase可以将NSNumbers发送到数据库,但不能发送到Ints。

我正在为许多喜欢/赞成使用Firebase交易,我需要增加用户按下upvote按钮的次数。

以下是我将数据发送到Firebase的代码:

likesRef?.runTransactionBlock({
       (currentData: MutableData) -> TransactionResult in

       var value = currentData.value as? NSNumber

       if value == nil{
           value = 0
       }

       let one: NSNumber = 1

       currentData.value = value! += one //error is here

       return TransactionResult.success(withValue: currentData)

我一直收到错误:

  

二元运算符'+ ='不能应用于两个'NSNumber'操作数

enter image description here

问题是我将Firebase MutableData类型传递给success(withValue: )方法而不是NSNumber值本身。我无法使用NSNumber.intValue,因为Firebase不接受Ints。

如何将两个NSNumber一起递增以作为MutableData对象的一部分发送到Firebase?

2 个答案:

答案 0 :(得分:1)

试试这个:

let newValue: Int

if let existingValue = (currentData.value as? NSNumber)?.intValue {
    newValue = existingValue + 1
} else {
    newValue = 1
}

currentData.value = NSNumber(value: newValue)

答案 1 :(得分:0)

您可以使用UInt而不是Int。这对我有用:

ctx.resolve_command