【问题标题】:firebase runTransactionBlockfirebase runTransactionBlock
【发布时间】:2016-10-06 19:08:54
【问题描述】:

我正在阅读此处看到的 firebase.google 的示例 https://firebase.google.com/docs/database/ios/save-data#save_data_as_transactions 我正在尝试编写自己的版本。我遇到了麻烦,因为 firebase 示例让我比开始之前更加困惑

我要做的就是当一个人点击一个按钮时,它会 ++(或 +=1)计数 另一个按钮将其删除

有人可以帮我弄清楚如何做到这一点...上一个问题的另一个用户发布了指向其他语言答案的链接,我试图用 swift 语言编写它,但我失败了

【问题讨论】:

  • 请不要删除一个问题然后重新发布。如果您有信息要添加到your previous question,请单击其下方的“编辑”链接并添加信息。
  • 要在 swift 中查找其他使用 Firebase 事务的示例,请参阅 this questionthis one 或来自 this search 的其他一些人。
  • 我同意,我刚刚发现了这个,因为文档中的事务块非常混乱。我不知道为什么会如此混乱。递增是很常见的事情,它们应该只有一个特定的函数来完成它,比如 incrementValue() 或其他东西。

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

似乎适用于 2021 年 Swift 5

gv.dbRef.child("referenceToLikes ie posts/user/likes").runTransactionBlock({ (currentData: MutableData) -> TransactionResult in
        var value = currentData.value as? Int
                if value == nil {
                    value = 0
                }
                currentData.value = value! + 1
        return TransactionResult.success(withValue: currentData)
    }) { error, committed, snapshot in
        if let error = error {
          print(error.localizedDescription)
        }
    }

【讨论】:

    【解决方案2】:

    感谢上面看到的 cmets,我能够让它工作

    ....runTransactionBlock { (currentData: FIRMutableData) -> FIRTransactionResult in
    
            var value = currentData.value as? Int
    
            if value == nil {
                value = 0
            }
    
            currentData.value = value! + 1
            return FIRTransactionResult.successWithValue(currentData)
    
    
    
    
        }
    

    【讨论】:

    • 你100%确定它有效吗?您是否同时对多个用户进行测试?这看起来比文档简单得多,所以如果你确定它有效,那么我宁愿使用这个 lol
    • @WayneFilkins 原始文档似乎只是保存了用户对星星所做的事情。这意味着如果他们再次点击,它将“不喜欢”。
    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2021-12-16
    • 2018-09-29
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多