【发布时间】:2014-09-12 05:20:25
【问题描述】:
我在一个 iOS 项目中使用 Coredata 和 MagicalRecord,但我无法弄清楚一些保存问题。 我有一个 ManagedObjectContext 将我的对象保存在内存中以显示一些信息。 当我想创建一个新实体时,我使用以下方法在后台上下文中创建它:
__block B *b = [B MR_createInContext:[[DataBaseManager sharedManager] managedObjectContext]];
[a setB:b];
__block A *aInLocalContext;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
B *bInLocalContext = (B *)[b MR_inContext:localContext];
aInLocalContext = (A *)[a MR_inContext:localContext];
[aInLocalContext setB: bInLocalContext];
} completion:^(BOOL success, NSError *error) {}];
b是在我的显示上下文中创建的,但是bInLocalContext在backgroundContext(即localContext)中是nil,所以我的数据没有持久化,关系也没有设置。在后台上下文中创建和保存新的 NSManagedObjectContext 并将数据保留在显示上下文中以更新 UI 是否正确?
提前致谢
【问题讨论】:
标签: ios multithreading core-data nsmanagedobjectcontext magicalrecord