我正在努力将 Realm 集成到 iOS 应用程序中,并开始编写一个类来处理我所有的 Realm 内容,并且正在编写一个方便的方法来动态更新任何 RLMObject。
在他们的文档中,更新对象很简单:
- (void)someMethod {
[self.realm beginWriteTransaction];
someObject.name = @"New name";
someObject.somethingElse = @"New something";
[self.realm commitWriteTransaction];
}
我想知道当您将 Realm 与 GCD 东西混合时,以下是否会起作用/是否会产生任何负面影响:
- (void)updateObjectAndCommitWithUpdateBlockdispatch_block_t)updateBlock {
[self.realm beginWriteTransaction];
updateBlock();
[self.realm commitWriteTransaction];
}
然后在另一个类中执行以下操作:
- (void)someMethod {
[[RealmManager sharedInstance] updateObjectAndCommitWithUpdateBlock:^{
someObject.name = @"New name";
someObject.somethingElse = @"New something";
}];
}
Best Answer-推荐答案 strong>
来自 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/
|