我正在使用NSFetchedResultsController。我想在一个表中查看动物园中的所有狮子会,其中狮子是动物园的多对多关系。可能有成千上万的狮子会,所以我需要一个20的批量。
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
NSPredicate* predicate = ???
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Lion" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
[fetchRequest setFetchBatchSize:20];
如何设置谓词?我已经有了Zoo对象。我只需要所有的狮子会。
答案 0 :(得分:0)
如您所知NSPredicate
是一个指定如何获取或过滤数据的类。
NSFetchRequest
有一个谓词属性,它指定了应该检索托管对象的逻辑条件。
以下是关于如何将其与核心数据结合使用的一个很好的示例 - http://nshipster.com/nspredicate/
答案 1 :(得分:0)
我将假设Zoo
实体具有名为lions
的关系。
Zoo *sanDiegoZoo = ...
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Lion"];
[request setPredicate:[NSPredicate predicateWithFormat:@"SELF IN %@", sanDiegoZoo.lions]];
[request setFetchBatchSize:20];
NSFetchResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.context sectionNameKeyPath:nil cacheName:nil];