【发布时间】:2011-02-27 15:46:22
【问题描述】:
我的要求: 我有这个直截了当的要求,即在索引表视图中按字母顺序列出人名,索引标题是字母的起始字母(另外还有顶部的搜索图标和 # 以显示以数字和其他特殊开头的杂项值字符)。
到目前为止我做了什么: 1.我正在使用核心数据进行存储,并且“last_name”被建模为Contacts实体中的String属性 2.我正在使用 NSFetchedResultsController 来显示排序后的索引表视图。
满足我要求的问题: 1. 首先,我无法让章节索引标题成为字母的第一个字母。 Dave 在以下帖子中的建议帮助我实现了同样的目标:NSFetchedResultsController with sections created by first letter of a string
我在 Dave 的建议中遇到的唯一问题是我无法将 misc 命名为分组在“#”索引下。
我尝试过的: 1. 我尝试向 NSString (category) 添加自定义比较方法来检查比较和部分是如何进行的,但是当在 NSSortDescriptor 选择器中指定时,该自定义方法不会被调用。
这里有一些代码:
@interface NSString (SortString)
-(NSComparisonResult) customCompare: (NSString*) aStirng;
@end
@implementation NSString (SortString)
-(NSComparisonResult) customCompare:(NSString *)aString
{
NSLog(@"Custom compare called to compare : %@ and %@",self,aString);
return [self caseInsensitiveCompare:aString];
}
@end
获取数据的代码:
NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"last_name"
ascending:YES selector:@selector(customCompare:)] autorelease]];
[fetchRequest setSortDescriptors:sortDescriptors];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:@"lastNameInitial" cacheName:@"MyCache"];
你能告诉我我缺少什么以及如何满足要求吗?
【问题讨论】:
标签: iphone nsfetchedresultscontroller indexed-view nssortdescriptor custom-compare