目标c-通过属性IN数组过滤核心数据结果



我目前有核心数据成功返回名为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

最新更新