带有A-Z部分的核心数据

时间:2009-12-31 18:29:13

标签: iphone core-data

我正在尝试使用以下示例为核心数据填充表添加A-Z索引:http://blog.sallarp.com/iphone-core-data-uitableview-drill-down/

但是,我无法解决在核心数据帮助程序头文件中设置sectionNameKeyPath属性的问题:

我是否需要像在CoreDataBooks中一样制作NSFetchedResultsController?或者我可以在这里的某处添加它吗?!对于无知感到抱歉,任何想法/帮助都会非常感激(这是撕掉我头发的第3天)。

+(NSMutableArray *) searchObjectsInContext: (NSString*) entityName : (NSPredicate *) predicate : (NSString*) sortKey : (BOOL) sortAscending : (NSManagedObjectContext *) managedObjectContext
{

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext];
    [request setEntity:entity]; 

    // If a predicate was passed, pass it to the query
    if(predicate != nil)
    {
        [request setPredicate:predicate];
    }

    // If a sort key was passed, use it for sorting.
    if(sortKey != nil)
    {
        NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:sortAscending];
        NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
        [request setSortDescriptors:sortDescriptors];

        [sortDescriptors release];
        [sortDescriptor release];
    }

    NSError *error;

    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

    [request release];

    return mutableFetchResults;
}

1 个答案:

答案 0 :(得分:3)

您需要实现相应的表视图数据源方法(sectionIndexTitlesForTableView:和tableView:sectionForSectionIndexTitle:atIndex :)。

我建议使用NSFetchedResultsController来执行此操作。请查看this answerCore Data backed UITableView with indexing以获取示例代码。