【问题标题】:How do I make a write operation in Realm (iOS) synchronous?如何使 Realm (iOS) 中的写入操作同步?
【发布时间】:2016-10-31 04:02:15
【问题描述】:

作为两步分析过程的一部分,我需要在第二步开始之前将数据写入持久存储。如果我通过 fina grain 通知异步执行此操作,则有点混乱。两个在一个函数中内联完成会很棒。

是否可以使 Realm().write { } 操作同步?第二步需要读回这些数据。

【问题讨论】:

    标签: ios realm


    【解决方案1】:

    Realm.write(_:) 同步的。

    【讨论】:

    • 这很容易。我只是假设,因为它不是一个块。谢谢。
    • 从文档中判断它是同步的一种方法是@noescape 属性。必须在函数中使用具有该属性的闭包参数,并且不能逃避调用本身的生命周期。有关更多信息,请参阅 Swift 文档中的 Nonescaping Closures
    • 不是同步的。至少有效。如果您写入一个值,然后使用 realm.objects() 从另一个线程查询该对象,则该值不会总是更新。
    • 方法是否同步与结果对其他线程可见的时间是正交的。只有在 Realm 刷新以查看更新版本的数据后(在主线程的下一次 runloop 迭代中,或由于在后台线程上显式调用 refresh()),其他线程才能看到更改。
    • @tempire 你是对的,有时 refresh() 本身无济于事。即使我们在一行代码中更新了一个值,在 refresh() 之后尝试从下一行访问它时,它也可能不会更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2018-11-18
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多