保存期间CoreData比较错误

Posted

技术标签:

【中文标题】保存期间CoreData比较错误【英文标题】:CoreData compare Error during Save 【发布时间】:2016-07-18 17:15:40 【问题描述】:

我在保存新对象/编辑现有对象时遇到了一些问题,来自 CoreData 中的一对多关系。

我有一个类 Patient 与类 Indication 具有 To-Many 关系。

正在发生的事情是: 第一次从正常工作流程创建指示对象时,一切似乎都可以保存,但如果我尝试从编辑屏幕访问它,它会因 SIGABRT 和以下错误而崩溃

-[Patient compare:]: unrecognized selector sent to instance 0x7fa991893ca0 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Patient compare:]: unrecognized selector sent to instance 0x7fa991893ca0'

如果我尝试从 NSFetchedResultsController 创建一个显示指示对象列表的新控制器,也会发生同样的情况。

我尝试通过两种方式创建它们之间的关系:

indication = [NSEntityDescription insertNewObjectForEntityForName:@"Indication"     
inManagedObjectContext:appDelegate.managedObjectContext];
indication.patient = patient;

并通过 CoreData 中的 GeneratedAccessors:

[patient addIndicationObject:indication];

并且我会在 viewDidLoad 期间验证这两个对象,以避免在编辑现有的指示时创建新的指示。但在这两种情况下,我都会遇到同样的错误。

到目前为止,还没有找到任何与此问题相关的帖子。请帮忙。

【问题讨论】:

【参考方案1】:

经过几天的研究但没有成功,我终于找到了一篇文章,设法解决了这个问题。

碰巧 NSFetchedResultsControllerDelegate 似乎“锁定”了 NSManagedObjectContext,这就是为什么我无法在同一上下文中添加或更改任何内容。

我只需要在离开屏幕后将代理设置为 nil,现在一切似乎都正常。

感谢这篇文章的解决方案: Core data: Serious application error

【讨论】:

以上是关于保存期间CoreData比较错误的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 2.0 / CoreData 2021:没有错误但实体未保存

CoreData 似乎保存了错误的变量

在 CoreData 中保存操作值导致错误

iOS 5.1:在 NSManagedObjectContext 保存时获取“CoreData:错误:(21)”

尝试在块中保存对象时崩溃。 (CoreData 无法满足...的错误)

从 CloudKit 获取并保存到 CoreData