【发布时间】:2016-11-21 01:28:53
【问题描述】:
我正在使用 MagicalRecord,但我不明白如何让它稳定且可预测地工作。
当我需要更新一些实体时,我从数据库中检索它们,根据逻辑更改它们,然后将它们发送到我的“Saver”方法中:
- (void) saveEntities:(NSArray *)entities {
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
for (Entity_class *entityElement in entities) {
NSPredicate *entitySearchPredicate = [...] // Composing predicate
Entity_class *foundEntity = [Entity_class MR_findFirstWithPredicate:entitySearchPredicate];
foundEntity = entityElement;
}
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
} completion:^(BOOL contextDidSave, NSError *error) {
// contextDidSave always equals NO. Sometimes changes get saved, but sometimes they don't
}];
}
我尝试保存本地上下文 [localContext MR_saveToPersistentStoreAndWait] 而不是默认上下文,但它从未成功。
第二天晚上,我一直在为这些上下文而苦苦挣扎,只是我已经用完了 Google 的搜索查询变体。如何处理上下文并正确保存?
【问题讨论】:
-
我刚刚尝试保存实体
[entityElement.managedObjectContext MR_saveToPersistentStoreAndWait]的上下文并且它有效。我还是不明白,为什么saveWithBlock:保存得这么莫名其妙。如果我需要做的只是保存实体的上下文,为什么还存在这种方法?
标签: ios objective-c iphone magicalrecord