我正在使用 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/