简而言之,我认为我没有正确格式化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"
感谢您的帮助!
答案 0 :(得分:2)
请改为:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status like 'inactive'"];
答案 1 :(得分:2)
'status'是一个字符串吗?尝试这样的事情:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status == %@", @"inactive"];