删除 MagicalRecord 中的实体不会持久

2024-01-05

我在使用 MagicalRecord 时遇到了一个奇怪的问题。删除不会持久。当我删除时,NSFetchedResultsControllerDelegate 正确地看到该对象已被删除。但是,如果我关闭并重新打开应用程序,该实体就会重新出现。

我用来删除实体的代码是:

ActivityType *activityType = [_fetchedResultsController objectAtIndexPath:indexPath];
[activityType deleteInContext:[NSManagedObjectContext MR_defaultContext]];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

我用于设置 NSFetchedResultsController 的代码是:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"ActivityType" inManagedObjectContext:[NSManagedObjectContext defaultContext]];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc]
                          initWithKey:@"name" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                    managedObjectContext:[NSManagedObjectContext defaultContext] sectionNameKeyPath:nil
                                               cacheName:@"activityTypes"];
_fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

根据其他SO帖子,我也尝试使用[NSManagedObjectContext rootSavingContext]在设置和删除中(但无济于事)。


我经历了核心数据的地狱之旅,并学到了一些东西。我很累,所以我就写一个简短的总结。

  1. 当您删除实体时,核心数据可能会由于您的删除规则而拒绝它。我的删除没有成功的原因是因为它需要级联,但它是无效的。我认为这与以某种方式遗弃实体有关。我不知道为什么这会导致阻止删除,但这就是在我的情况下修复它的原因。我发现它的方式是通过日志,我看到一些关于引用的依赖实体的声明,并且我意识到删除规则将适用。

  2. 当日志显示有关严重错误和侦听器的内容时​​,请检查 FRC 代码。由于这是侦听器,因此您的罪魁祸首代码将位于此处的某个地方。就我而言,我禁用了 [tableview beginUpdates] 和 [tableview endupdates]。 FRC 实际上需要这个(我认为它是可选的)。否则,您会收到一些有关不一致和 ManagedObjectContextListener 以及如何添加或删除行等的错误。

  3. 当您删除时,它实际上可能会保存到内存本地上下文中,但可能不会保存到持久存储中。这意味着 FRC 委托代码将看到更改,但可能不会保存。此外,内存存储可能不会执行删除规则检查,因为它通过了我的。但持久存储将进行检查。必须进一步研究这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除 MagicalRecord 中的实体不会持久 的相关文章

随机推荐

  • 更改完整日历中单元格的颜色

    我需要更改 arshaw 完整日历的单元格颜色 我的要求是 公司提供的假期列表的 td 单元格应该有相同的颜色 员工休假列表的 td 单元格应该具有相同的颜色 我们如何实现这一点 我能够改变事件的颜色 但不能改变单元格的颜色 另外 如果我们
  • 如何以编程方式更改 Android 谷歌地图 v2 中的语言

    我有一个应用程序 您可以在其中更改设置中的区域设置 目的是能够在应用程序内拥有与系统区域设置不同的区域设置 我也希望能够设置地图的语言 我只能找到 设置手机的系统语言 之类的答案 这不是我要找的 有没有办法以编程方式或从 xml 设置地图的
  • Matlab聚类编码-绘制散点图

    我有一年期间每日 每年的能源消耗数据集 我想显示该数据集的散点图 分为我期望存在的四个集群 由于四个季节的差异 我知道 matlab cluster 函数可以做到这一点 但我的统计数据非常生疏 我希望得到一些指导来确定哪个函数最好使用 Th
  • 如何在 Mac 版“Visual Studio Code”中取消链接/从 Git 存储库注销

    一直在玩这个微软编辑器 相当不错 但缺少一些最基本的 UI 位 不知道如何从我之前登录的 Git 存储库中取消链接 注销 退出并重新打开该软件不起作用 而且 没用说 我有很多我使用的存储库 任何想法 在侧面板的底部 有一个帐户图标 通常位于
  • 简单的CSS固定标题

    使以下页眉成为固定页眉的最简单方法是什么 http presentationtube com header php http presentationtube com header php我应该移动标题中的菜单元素吗 templatemo
  • 根位于 arr[0] 的二叉堆有什么好处

    我正在数组上写一个二进制堆arr 除叶节点外 每个节点都有两个子节点 根可以位于arr 0 or arr 1 接受的答案在为什么在数组实现的堆中索引 0 未被使用 https stackoverflow com questions 2290
  • TFS 到 TFS 迁移工具 - 域问题

    第三方为我们开发了一些应用程序 并一直使用 MS Team Foundation Server 2008 进行源代码控制 我的公司最近设置了 TFS 2008 环境 我们正在尝试将源代码从第 3 方开发人员 TFS 迁移到我们的 TFS 机
  • SQL 不断收到 ON UPDATE CASCADE 错误

    大家好 我正在使用这个 ON UPDATE CASCADE 功能 但我仍然无法让它工作 我的第一张桌子 CREATE TABLE Stab Stab id int not null Sprache VARCHAR2 2000 Vorname
  • Swift 保留周期和闭包

    我尝试做很多研究来理解保留周期 但我似乎在我的例子中找不到任何东西 我确实知道 如果我将属性设置为闭包 则会发生保留周期 并且需要使用弱或无主 但我有两个例子 我想知道它们是否正确完成 提前致谢 我已经尝试查看它们是否已经在 stackov
  • jest.toHaveBeenCalledWith 中松散匹配一个值

    我有一个分析跟踪器 它只会在 1 秒后调用 并且带有一个对象 其中intervalInMilliseconds 持续时间 值为not确定性的 我该如何使用jest toHaveBeenCalledWith测试对象 test pageStat
  • 有没有办法在非模板类中定义模板成员?

    假设我有一个名为的类模板Compute 和另一个名为Function A使用成员函数模板 template
  • Laravel 4 - 显示带有旧数据输入以及数据库信息的编辑表单

    我正在为我的应用程序制作一个编辑表单 我想知道是否有人可以告诉我如何将数据库中的数据获取到我的文本字段中 我可以根据用户的点击找到我需要编辑的记录 如果我执行以下操作 我可以显示信息 value letter gt subject 但是 我
  • C# WPF 即使在最小化时也捕获 keydown

    我想知道如何让我的应用程序捕获任何 keydown keyup 即使应用程序表单最小化也是如此 假设程序最小化 然后用户按 A 将出现一个弹出控件 请注意 我的程序可以运行 但在最小化时不能运行 谢谢 你需要的是HotKeys 没有内置的
  • 从父框架中的 iframe 打开锚标记

    给定以下 HTML iframe 中的锚标记是否可以定位父窗口 div div iframe pageview html 内容 a href http www google com link a 你想要的target属性 https dev
  • 移动应用商店分析选项(Apple、Android、OVI 等)? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人有移动应用商店分析软件 服务的经验吗 我目前只为 iOS 开发 所以这是我主要感兴趣的 但是我想知道
  • 在 Feign 客户端中使用 spring 表单编码器时,请求正文未正确编码和隐藏

    我已经为 spring open feign 添加了必要的依赖项 如中提到的https github com OpenFeign feign form https github com OpenFeign feign form并遵循上述 f
  • 如何在两个表格之间添加垂直线?

    这是标记 我想在两个表格之间添加一条垂直线 我不想在这里使用图像 我需要一个纯 html 解决方案 div table width 50 tr td p class dotted row 1 cell 1 p td td p class d
  • PgAdmin 的 Kubernetes 持久卷挂载

    我正在尝试为我的 pgadmin 部署创建持久卷声明 以便在每次从 CD 管道部署后推出更新时可以保留我的设置 服务器等 在我的日志中 我收到以下错误 2020 10 05 00 54 56 0000 91 INFO Worker exit
  • Angular2:如何向应用程序注入没有装饰器的服务?

    当尝试使用时Http在 App 组件 我们正在引导的组件 中一切正常 找到 export default class AppComponent constructor public http Http console log this ht
  • 删除 MagicalRecord 中的实体不会持久

    我在使用 MagicalRecord 时遇到了一个奇怪的问题 删除不会持久 当我删除时 NSFetchedResultsControllerDelegate 正确地看到该对象已被删除 但是 如果我关闭并重新打开应用程序 该实体就会重新出现