获取满足谓词的实体,甚至有些实体的父对象为空
Posted
技术标签:
【中文标题】获取满足谓词的实体,甚至有些实体的父对象为空【英文标题】:Get Entities that fulfill predicate even some have null object for parent 【发布时间】:2014-11-06 06:42:46 【问题描述】:我正在尝试使用谓词获取 NSFetchReultController 的记录
NSNumber *project_id=[[_options objectForKey:@"project"] objectForKey:@"server_id"];
predicate=[NSPredicate predicateWithFormat:@"(owner.user_id = %@ OR Any jarSharedToUsers.user_id = %@) AND status = %@ AND parentProject.project_id = %@ ",user.user_id,user.user_id,[NSNumber numberWithInt:1],project_id];
错误:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“在实体中找不到 keypath parentProject.project_id”
我认为这是由于某些实体的 parentProject 为空。但是然后我如何获得满足谓词的实体
【问题讨论】:
【参考方案1】:如果您尝试访问不存在的 NSManagedObject 的属性,通常会引发此错误。您是否重新检查了您的数据模型?从项目到 parentProject 的关系是否设置正确? parentProject 是否有一个名为 project_id 的实体?
您是否在更改 DataModel 后更新了 NSManagedObject 类?
另外:您是否在更改 dataModel 后从设备上完全删除了应用程序(或重置模拟器,如果您使用的话)?对 dataModel 的更改仅适用于干净的构建或使用迁移模型。
【讨论】:
问题是一些 NSManagedObject 有一个关系,而一些没有那个关系。以上是关于获取满足谓词的实体,甚至有些实体的父对象为空的主要内容,如果未能解决你的问题,请参考以下文章
fetchedResultsController 获取带有谓词的实体的最佳实践