当1ste失败时,NSFetchController与其他谓词一起获取

时间:2014-09-10 13:49:58

标签: ios nsfetchedresultscontroller nsfetchrequest

我有fetchrequest。现在我需要跟踪"跟踪"来自数据库的点,但是当没有跟踪点时,它们都需要被检索。

我该怎么做?我现在在我的fetchcontroller上设置了一个谓词,但是当它没有找到任何跟踪点时,它就不会显示任何内容。那么我在哪里可以联系到这个,然后说检索一切...

有没有办法倾听没有找到任何东西或者这是怎么做的?

编辑:

- (NSFetchedResultsController *)fetchedResultsController {

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Rank" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
    [fetchRequest setEntity:entity];

/*    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", @"Auto"];
    [fetchRequest setPredicate:predicate];*/

    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
    [fetchRequest setSortDescriptors:@[sort]];

    [fetchRequest setFetchBatchSize:20];

    NSFetchedResultsController *theFetchedResultsController =
            [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                managedObjectContext:[NSManagedObjectContext MR_defaultContext] sectionNameKeyPath:nil
                                                           cacheName:nil];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;

}

1 个答案:

答案 0 :(得分:0)

感谢Larme,这是解决方案:

- (NSFetchedResultsController *)fetchedResultsController {

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Rank" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
    [fetchRequest setEntity:entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", @"DON"];
    [fetchRequest setPredicate:predicate];

    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
    [fetchRequest setSortDescriptors:@[sort]];

    [fetchRequest setFetchBatchSize:20];

    NSFetchedResultsController *theFetchedResultsController =
            [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                managedObjectContext:[NSManagedObjectContext MR_defaultContext] sectionNameKeyPath:nil
                                                           cacheName:nil];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;

    if ([[_fetchedResultsController fetchedObjects] count] == 0)
    {
        NSLog(@"0 found");
        [fetchRequest setPredicate:nil];
    }

    return _fetchedResultsController;

}