给定以下界面:
@interface Country : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * isAggressive;
@end
我有一个屏幕,用户可以在其中看到
Countries
列表并切换isAgressive
标志。仅在用户点击时应用选项保存。他们还可以选择取消。基于此,我使用以下代码在屏幕加载时加载所有国家/地区:
tempContext = [NSManagedObjectContext MR_context];
// Load our countries.
countries = [Country MR_findAllSortedBy: @"name"
ascending: YES
inContext: tempContext];
我这样做是在
tempContext
而不是默认上下文中进行的,因为我不希望这些对象干扰任何其他对象。取消时,我没有做任何特定的事情。只允许
tempContext
离开范围。在申请时,我尝试执行以下操作:// Save changes.
[MagicalRecord saveWithBlock: ^(NSManagedObjectContext * saveLocalContext)
{
[countries enumerateObjectsUsingBlock: ^(Country * country, NSUInteger countryIndex, BOOL * stop)
{
[country MR_inContext: saveLocalContext];
}];
} completion:^(BOOL success, NSError *error) {
NSLog(@"Completed: %@, %@.", success ? @"true" : @"false", error.localizedDescription);
//This is called when data is in the store, and is called on the main thread
}];
但是,这似乎没有进行任何更改。在调试中运行时,我收到以下日志消息:
[NSManagedObjectContext(MagicalSaves)MR_saveWithOptions:completion:](0x6000001dc020)**未命名**上下文中没有更改-不保存
完成:false,(空)。
并且我的更新未保存。如何正确处理更新的对象并执行保存?
最佳答案
问题是[MagicalRecord saveWithBlock...
保存defaultContext而不是tempContext。
尝试改为调用[tempContext MR_saveToPersistentStoreWithCompletion ...
之类的东西
关于ios - CoreData和MagicalRecord-仅在应用用户点击时,我应该如何正确处理更新数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20975223/