在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'操作数
问题是我将Firebase MutableData
类型传递给success(withValue: )
方法而不是NSNumber值本身。我无法使用NSNumber.intValue
,因为Firebase不接受Ints。
如何将两个NSNumber一起递增以作为MutableData对象的一部分发送到Firebase?
答案 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