【发布时间】:2016-02-09 20:49:07
【问题描述】:
当我尝试在后台保存对象时,出现异常 - “从不正确的线程访问领域。” 这是领域的初始化 - “self.realm = [RLMRealm defaultRealm]”
我在后台保存对象到领域的方法:
- (IBAction)saveProduct:(id)sender {
Product *product = [Product new];
[self.productService addProduct:product onSuccess:^{
NSLog(@"Succes");
} onFailure:^(NSError *error) {
NSLog(@"Error");
}];
}
- (void)addProduct:(NSObject *)order onSuccess:(success)success onFailure:(failure)failure
{
__weak __typeof(self)weakSelf = self;
dispatch_async(self.queue, ^{
__strong __typeof(weakSelf) strongSelf = weakSelf;
[strongSelf.dao saveProduct:order];
dispatch_async(strongSelf.mainQueue, ^{
success();
});
});
}
- (void)saveProduct:(NSObject *)product
{
ProductModel *model = [self ponsoToModel:product];
[self.dataBase saveObject:model];
}
- (void)saveObject:(RLMObject *)object
{
[self.realm beginWriteTransaction];
[self.realm addObject:object];
[self.realm commitWriteTransaction];
[self dataBaseDidSave];
}
【问题讨论】:
-
上面的代码应该是某种方法吗?
-
@Alistra 我更新我的问题,如果有帮助的话。
标签: objective-c multithreading grand-central-dispatch realm