我目前有核心数据成功返回标题为Event
的特定实体的所有结果:
NSManagedObjectContext *context = [delegate managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Event"
inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSError *error;
NSArray *fetchResults = [context executeFetchRequest:request error:&error];
Event实体的一个属性是标题为tid
的字符串。我还有一个包含所有允许的tid值的数组filterArray
。
如何让我的Core Data请求只返回tid属性与filterArray
中某个值匹配的事件?我相信答案与NSPredicate相关,但我还不熟悉它,还没有达到我的意愿。
答案 0 :(得分:59)
试试这个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tid IN %@", filterArray];
[request setPredicate:predicate];
查看Aggregate Operations中的Predicate Programming Guide。
修改强>
看看NSPredicate iPhone 3.2 SDK Core Data “IN clause” NSInvalidArgumentException exception。你有同样的错误。问题是列/属性名称中的拼写错误。语法应该没问题,它不能只找到tid
。