2010-05-28 3 views
1

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

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?

ответ

2

Индексный путь - это всего лишь набор индексов, например. {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 для обработки обновлений табличного представления для вас - он будет обрабатывать пути указателя для вас, в зависимости от того, как вы разделяете разделы.

+0

Да, вы правы, я хочу показать его в UITableView. Просто хочу, чтобы слайд в подробном представлении для аннотации карты, которая была нажата. –

+0

Я бы порекомендовал вам поместить вашу выборку данных в 'NSFetchedResultsController' и позволить ей обновлять таблицы. Это устраняет около 99% работы по подключению результата выборки Core Data к представлению таблицы. –

+0

Я получил его работу, просто нужно, чтобы начать с моего корневого контроллера. –

Смежные вопросы