按属性IN数组筛选核心数据结果
我目前有Core Data成功返回一个名为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
的string。 我也有一个包含所有允许的tid值的数组filterArray
。
我如何让我的核心数据请求只返回具有匹配filterArray
中的值之一的tid属性的事件? 我相信答案与NSPredicate有关,但我对此还不够熟悉,还没有完全达到我的意愿。
尝试这个:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tid IN %@", filterArray]; [request setPredicate:predicate];
看一下“ Predicate Programming Guide”中的Aggregate Operations 。
编辑
看看NSPredicate iPhone 3.2 SDK核心数据“IN子句”NSInvalidArgumentExceptionexception 。 这是同样的错误,你有。 问题是列/属性名称中的拼写错误。 语法应该没问题,它不能findtid
。