保存期间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:没有错误但实体未保存
iOS 5.1:在 NSManagedObjectContext 保存时获取“CoreData:错误:(21)”