realm - 如何强制 NSOperationQueue 在一个线程上运行?

标签 realm nsoperationqueue

我正在使用 Realm ,我会从添加到一个 NSOperationQueue 的不同操作中获取/设置 Realm 对象的属性.

假设在 operation0 中,我将 Realm 对象的属性设置为一个新值,然后我将 operation1 添加到同一个操作队列中,操作 1 获取可能获得旧值的 Realm 对象的属性,因为线程运行 operation1 可能与 operation0 不同。

我该如何解决这个问题?任何建议将不胜感激。

最佳答案

听起来你需要保证operation1只会在 operation0 之后开始执行已成功完成设置 Realm 写入事务。

有两种方法可以处理这个问题:

1.使操作队列串行。 设置maxConcurrentOperationCount队列的属性为 1,这样即使您同时将操作添加到队列中,它们也只会按照添加的顺序执行。

2.制作operation1依赖于 operation0 . 如果需要保持操作队列并发,可以使用 NSOperation.addDependency(_:) 明确确保 operation1只会开始一次operation0已完成。

operation1 ,请务必调用 refresh() Realm您用来获取 Realm 对象的对象,以绝对确保您在 operation0 中所做的更改已正确暴露在该队列上。

关于realm - 如何强制 NSOperationQueue 在一个线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42152429/

相关文章:

swift - Realm.io API 自动映射父对象

swift - 将对象添加到 RLMArray

ios - 当我尝试将保存的数据更新到 Realm 时它崩溃了,图像在更新时变为零

iphone - 在这种情况下,@synchronize 是否可以防止竞争条件?

ios - 有没有办法像这样向 NSOperationQueue 添加 block

javascript - 如何在javascript中修改realm中的现有记录

ios - 无法在 Realm 中存储 NSDate

NSOperationQueue 在 IOS 中崩溃

swift - 如何防止同时进行两次触摸

objective-c - 多个 NSOperationQueue?