使用 MagicalRecord 截断所有应用程序关闭后不保存

Posted

技术标签:

【中文标题】使用 MagicalRecord 截断所有应用程序关闭后不保存【英文标题】:Truncate all with MagicalRecord not saving after app closes 【发布时间】:2014-08-20 08:26:00 【问题描述】:

我正在使用 Magical Record,我想做的是当用户进入多项目选择器表视图时,他可以选中和取消选中许多项目,当按下完成时,这些项目被保存。

当我使用该应用程序时没有问题,但是当我离开并返回时,之前检查过的所有项目和新项目都会被检查(假设我在启动时检查了 5 个项目,然后我去回到多项目选择器,取消选中它们并检查其他 5 个,当我离开应用程序后返回多项目选择器时,将检查 10 个。

这是我按下选择器的“完成”按钮时的代码:

 -(void)selector:(KNMultiItemSelector *)selector didFinishSelectionWithItems:(NSArray *)selectedItems


 [self dismissViewControllerAnimated:YES completion:^
    currentFriends = selectedItems;
    

    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) 
       
        [FriendsSelected MR_truncateAll];
        
        for (KNSelectorItem * user in selectedItems) 

        FriendsSelected *friend = [FriendsSelected MR_createEntityInContext:localContext];
        friend.friendID = user.selectValue;
        friend.friendName = user.displayValue;
        NSLog(@"Friend %@ Saved", friend.friendName);
  
        
   
    ];

 ];


我尝试在应用程序终止时保存,我尝试使用完成和后台任务,没有任何接缝可以工作。也许我错过了什么?

PS:我尝试了this other answer,但它不起作用,并且在我使用的版本中不推荐使用 MR_save。

【问题讨论】:

【参考方案1】:

使用MR_truncateAllInContext: 确保使用您使用saveWithBlock: 启动的实际保存操作所使用的上下文删除您的数据

【讨论】:

以上是关于使用 MagicalRecord 截断所有应用程序关闭后不保存的主要内容,如果未能解决你的问题,请参考以下文章

*** 尝试截断时 +[NSManagedObjectContext MR_defaultContext] 中的断言失败

导入时保存所有内容之前的 MagicalRecord 完成块

每次应用加载时,MagicalRecord 都会删除所有创建的对象

MagicalRecord 入门

从 Model.xcdatamodeld 中获取所有实体

MagicalRecord UIApplicationDidEnterBackground