iphone: проблема NSP-предиката с NSFetchedResultsController - PullRequest
1 голос
/ 01 октября 2010

В настоящее время у меня есть объект «Тема», определенный в моей системе как:

@interface Topic :  NSManagedObject  
{
}
@property (nonatomic, retain) NSString * path;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * topicID;
@property (nonatomic, retain) NSNumber * parent;
@end

Я хочу получить тему с определенным номером (например, 4001), используя NSFetchedResultsController. Я определил мой как:

- (NSFetchedResultsController *)fetchedResultsController {

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

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Topic" inManagedObjectContext:_context];
    [fetchRequest setEntity:entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"topicID == 4100"];
    [fetchRequest setPredicate:predicate];


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

    [fetchRequest setFetchBatchSize:20];

    NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_context sectionNameKeyPath:nil cacheName:@"Root"];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;

    [fetchRequest release];
    [theFetchedResultsController release];

    return _fetchedResultsController;    

}

.. Без предиката FetchedResultsController работает нормально ... однако, как только я его добавляю, возникает ошибка, и приложение вылетает ... Может кто-нибудь сказать, если я неправильно определил свой NSPredicate?

Ответы [ 2 ]

2 голосов
/ 31 июля 2012

попробуйте установить значение cacheName равным nil:

NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_context sectionNameKeyPath:nil cacheName:nil];

Это помогло мне в подобном случае.

0 голосов
/ 17 января 2011

Хотелось бы что-нибудь подобное?

[NSPredicate predicateWithFormat:@"topicID == %@", [NSNumber numberWithInt:4100]];
...