【问题标题】:Firebase Transaction MutableData showing NilFirebase 事务 MutableData 显示 Nil
【发布时间】:2021-03-24 21:55:06
【问题描述】:

我有一个运行事务的路径。在继续之前,我会检查该值是否为零。如果它是 nil 我中止,如果不是我继续。问题是值不是 nil,但可变数据表明它是。

分贝:

@posts
   @postId_abc
      -date: ....
      -views: 0

交易:

let viewsPath = Database.database().reference()
                   .child("posts")
                   .child("postId_abc")
                   .child("views")

viewsPath.runTransactionBlock({ (mutableData: MutableData) -> TransactionResult in

    let doesViewsExist = mutableData.value as? Int // I also tried Double
    if doesViewsExist == nil {
                        
        return TransactionResult.abort() // "views" value is 0
    }

    // ...
}

【问题讨论】:

    标签: ios swift firebase-realtime-database


    【解决方案1】:

    这是预期的行为。当您启动一个事务时,SDK 会立即调用您的事务处理程序,并用它对节点当前值的最佳猜测。大多数情况下,猜测是nil,因为客户还没有更好的知识。

    因此,您必须中止事务,而是在可变数据上设置另一个值,例如 0。该值是多少并不重要,因为无论如何都会重试事务。

    有关这方面的更多背景信息,请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-19
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多