OGeek|极客世界-中国程序员成长平台

标题: iOS Realm 更新 block 中的对象 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 10:19
标题: iOS Realm 更新 block 中的对象

我正在努力将 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-推荐答案


来自 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4