iPhone: Получить indexPath объекта предиката - PullRequest
1 голос
/ 28 мая 2010

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

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    [fetchRequest setEntity:[NSEntityDescription entityForName:@"Ride" inManagedObjectContext:self.managedObjectContext]];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title = %@ AND addressFull = %@", view.annotation.title, view.annotation.subtitle];
    [fetchRequest setPredicate:predicate];
    NSMutableArray *sortDescriptors = [NSMutableArray array];
    [sortDescriptors addObject:[[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES] autorelease]];
    [sortDescriptors addObject:[[[NSSortDescriptor alloc] initWithKey:@"addressFull" ascending:YES] autorelease]];
    [fetchRequest setSortDescriptors:sortDescriptors];
    [fetchRequest setReturnsObjectsAsFaults:NO];
    [fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"title", @"addressFull", nil]];
    NSError *error = nil;
    NSArray *fetchedItems = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
    // Sohow what record we returned
    NSLog(@"%@",[fetchedItems objectAtIndex:0]);

Итак, я могу правильно получить свой объект в массив. Но как мне перевести этот объект в indexPath?

1 Ответ

2 голосов
/ 28 мая 2010

Путь индекса - это просто набор индексов, например, {0, 2} может представлять путь индекса, указывающий на первый раздел и третью строку табличного представления - если ваша конечная цель - представление табличного представления данных вашего массива.

Этот путь индекса может указывать на любой конкретный объект в вашем массиве, в зависимости от того, как вы преобразуете путь в индекс вашего массива.

Если вы хотите создать произвольный путь индекса, это довольно просто:

NSUInteger myFirstIndex = 0;
NSUInteger mySecondIndex = 2;
NSUInteger myIndices[] = {myFirstIndex, mySecondIndex};
NSIndexPath *myIndexPath = [[NSIndexPath alloc] initWithIndexes:myIndices length:2];
// ...do someting with myIndexPath...
[myIndexPath release];

Итак, вам нужно выяснить, как ваша структура массива преобразуется в разделы и строки (опять же, если вы хотите создать представление табличного представления).

Другой вариант - использовать NSFetchedResultsController для обработки обновлений табличного представления для вас - он будет обрабатывать пути индексации в зависимости от того, как вы разбили свои разделы.

...