我希望在后台线程上获取大量的对象,但是我无法将它们传递到主线程,因为我遇到了
*** Terminating app due to uncaught exception 'RLMException', reason: 'Realm accessed from incorrect thread'
获取代码
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
//Background Thread
RLMRealm * realm = [RLMRealm defaultRealm];
self.allObjectsRLMResult = [MyClass allObjectsInRealm:realm];
dispatch_async(dispatch_get_main_queue(), ^(void){
// use self.allObjects and do stuff on main thread
});
});
如何在后台执行抓取并将对象传递到主线程,以便性能影响最小化
我可以获取主键,然后在主线程上重新获取,但这将与直接获取它们的性能相同(甚至可能更慢)。
let objectIds = listOfResults.flatMap({ $0["objectId"] })
。你有其他建议吗? - Carlos RicardolistOfResults
的?你想要做什么?你是在创建一个 objectId 数组,然后将其传递到主线程吗? - yoshyosh