Фильтрация CoreData FetchRequest - PullRequest
0 голосов
/ 29 января 2012

У меня выпадение мозга при попытке отфильтровать fetchRequest.

Я могу получить полную информацию о каждой записи объекта, но мне нужны только сведения о записи в текущем indexPath.

Здесь мой код находится сейчас:

-(void) fetchStuff {

    NSLog(@"%s", __FUNCTION__); 
    NSError *error = nil;

    NSManagedObjectContext *context = [self managedObjectContext];      
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *woodgie = [NSEntityDescription entityForName:@"WidgetEntity" inManagedObjectContext:context];

    [fetchRequest setEntity:woodgie];

    NSArray *fetchResults = [managedObjectContext executeFetchRequest:fetchRequest error:&error];


    fetchedObjects = [fetchResults objectAtIndex:selectedRow];


    NSLog(@"selectedRow: %i", selectedRow);  //0

    NSLog(@"fetchedObjects: %@", fetchedObjects);



     for (WidgetEntity *wigglies in fetchedObjects  ) {

         NSSet *peopleSet = [wigglies valueForKey:@"people"];    
         for (id person in peopleSet) {          
             personName = [person valueForKey:@"name"];
             NSLog(@"name = %@", personName);
         }
         NSSet *keywordSet = [wigglies valueForKey:@"keyword"];  
         for (id keyWord in keywordSet) {
              keywordName = [keyWord valueForKey:@"word"];
             NSLog(@"Keyword = %@", keywordName);

.....
}

В этой строке я получаю исключение "for (WidgetEntity * wigglies in fetchedObjects) {" (countByEnumeratingWithState: objects: count:]: нераспознанный селектор отправлен в экземпляр) ..

но правда в том, что - я думаю, как отфильтровать данные.

Любая помощь / указатели будут оценены.

Ответы [ 2 ]

1 голос
/ 30 января 2012

Вы говорите о получении записи в "выбранной строке" - это говорит о том, что вы уже извлекли записи и отображаете их, предположительно в таблицеПосмотреть.

В этом случае нет необходимости повторно извлекать сущности, просто используйте объект из соответствующего индекса в массиве источника данных или в полученном контроллере результатов.

1 голос
/ 29 января 2012
-(void) fetchStuff {

    NSLog(@"%s", __FUNCTION__); 
    NSError *error = nil;

    NSManagedObjectContext *context = [self managedObjectContext];      
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *woodgie = [NSEntityDescription entityForName:@"WidgetEntity" inManagedObjectContext:context];

    [fetchRequest setEntity:woodgie];

    NSArray *fetchResults = [managedObjectContext executeFetchRequest:fetchRequest error:&error];


    fetchedRecord = [fetchResults objectAtIndex:selectedRow];


    NSLog(@"selectedRow: %i", selectedRow);  //0

    NSLog(@"fetchedRecord: %@", fetchedRecord); // this looks ok

Внимательно проверьте следующие две строки .

     //for (WidgetEntity *wigglies in fetchResults  ) { // crash out here
     WidgetEntity *wigglies = fetchedRecord;

         NSSet *peopleSet = [wigglies valueForKey:@"people"];    
         for (id person in peopleSet) {          
             personName = [person valueForKey:@"name"];
             NSLog(@"name = %@", personName);
         }
         NSSet *keywordSet = [wigglies valueForKey:@"keyword"];  
         for (id keyWord in keywordSet) {
              keywordName = [keyWord valueForKey:@"word"];
             NSLog(@"Keyword = %@", keywordName);

.....
}
...