首页 文章

搜索关系时NSPredicate for NSFetchedResultsController

提问于
浏览
0

我正在使用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对象 . 我只需要所有的狮子会 .

2 回答

  • 0

    如您所知 NSPredicate 是一个指定如何获取或过滤数据的类 .

    NSFetchRequest 具有谓词属性,该属性指定应检索托管对象的逻辑条件 .

    这是一个很好的例子,说明如何将它与核心数据结合使用 - http://nshipster.com/nspredicate/

  • 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];
    

相关问题