使用NSPredicate过滤NSManagedObjects时引发异常

时间:2011-04-07 17:14:05

标签: objective-c cocoa cocoa-touch core-data

简而言之,我认为我没有正确格式化NSPredicate。

给定一个NSManagedObjects数组,我想构造一个包含属性与某个值匹配的对象的新数组。在这种情况下,属性status等于值“不活动”。

parentObject是我的核心数据对象模型中的父实体。一个ivar从前一个控制器传入。它也已经通过以前的控制器获取。

theRelationship是在实体类型为ChildEntity的模型中定义的一对多关系。

NSSet *theRelatedObjects = [parentObject valueForKey:@"theRelationship"];  
NSArray *unfilteredObjects = [theRelatedObjects allObjects];  
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status == inactive"]; 
NSArray *filteredObjects = [unfilteredObjects filteredArrayUsingPredicate:predicate];   
//at this point NSUnknownKeyException is raised.  
//error message:  the entity ChildEntity is not key value coding-compliant for the key "inactive"  

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

请改为:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status like 'inactive'"];

答案 1 :(得分:2)

'status'是一个字符串吗?尝试这样的事情:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status == %@", @"inactive"];