我正在努力将 Realm 集成到 iOS 应用程序中,并开始编写一个类来处理我的所有 Realm 内容,并正在编写一个方便的方法来动态更新任何 RLMObject。
在他们的文档中,更新对象非常简单:
- (void)someMethod {
[self.realm beginWriteTransaction];
someObject.name = @"New name";
someObject.somethingElse = @"New something";
[self.realm commitWriteTransaction];
}
我想知道当您将 Realm 与 GCD 内容混合时,以下内容是否会起作用/产生任何负面后果:
- (void)updateObjectAndCommitWithUpdateBlock:(dispatch_block_t)updateBlock {
[self.realm beginWriteTransaction];
updateBlock();
[self.realm commitWriteTransaction];
}
然后在另一个类中执行以下操作:
- (void)someMethod {
[[RealmManager sharedInstance] updateObjectAndCommitWithUpdateBlock:^{
someObject.name = @"New name";
someObject.somethingElse = @"New something";
}];
}
最佳答案
来自realm.io:
Sharing RLMRealm instances across threads is not supported.
所以,你需要使用
RLMRealm *realm = [RLMRealm defaultRealm];
在每个线程中。
如果您更喜欢 block ,请使用标准 block :
[realm transactionWithBlock:^{
//your code
}];
关于iOS Realm 更新 block 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746623/