realm 'Can only delete an object

2018-05-22  本文已影响0人  擅长看漫画的勋同学

realm报错出现这个问题,如果不是Realm对象使用不一致的话,一般是realm对象跨线程使用了,这时候只需要使用-[RLMRealm resolveThreadSafeReference:]就可以了(realm官方文档例子):

Person *person = [Person new];
person.name = @"Jane";
[realm transactionWithBlock:^{
    [realm addObject:person];
}];
RLMThreadSafeReference *personRef = [RLMThreadSafeReference
    referenceWithThreadConfined:person];
dispatch_async(queue, ^{
    @autoreleasepool {
        RLMRealm *realm = [RLMRealm realmWithConfiguration:realm.configuration
                                                     error:nil];
        Person *person = [realm resolveThreadSafeReference:personRef];
        if (!person) {
            return; // person was deleted
        }
        [realm transactionWithBlock:^{
            person.name = @"Jane Doe";
        }];
    }
});
上一篇 下一篇

猜你喜欢

热点阅读