获取实现谓词的实体,甚至某些实体具有父对象的null对象

时间:2014-11-06 06:42:47

标签: ios objective-c iphone core-data nspredicate

我正在尝试使用谓词

获取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为null。但后来我如何得到满足谓词的entites

1 个答案:

答案 0 :(得分:0)

如果尝试访问不存在的NSManagedObject的属性,则通常会抛出此错误。你重新检查过dataModel了吗?从项目到parentProject的关系是否设置正确? parentProject是否有一个名为project_id的实体?

更改DataModel后是否更新了NSManagedObject类?

另外:在更改dataModel之后,您是否完全从设备中删除了应用程序(或者在使用时重置了模拟器)?对dataModel的更改仅适用于干净版本或使用迁移模型。