给定以下界面:

@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/

10-09 06:45