我使用谓词在核心数据中查找对象。我可以成功找到我想要的对象,但我还需要获取该对象的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?
答案 0 :(得分: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
来处理表视图更新 - 它将为您处理索引路径,具体取决于您对部分进行分区的方式。