我目前有核心数据成功返回名为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
的字符串。我还有一个数组filterArray
,它包含所有允许的tid值。
如何让我的核心数据请求只返回tid属性与filterArray
中的某个值匹配的事件?我相信答案与NSPredicate有关,但我对它还不够熟悉,无法让它屈从于我的意愿。
试试这个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tid IN %@", filterArray];
[request setPredicate:predicate];
请参阅谓词编程指南中的聚合操作。
编辑
请查看NSPredcate iPhone 3.2 SDK核心数据"IN子句"NSInvalidArgumentException异常。这和你们犯的错误是一样的。问题出在列/属性名称中。语法应该没问题,不能只找到tid
。