我正在制作一个通讯录应用程序,我从地址簿中获取名称并将它们存储在核心数据中,并使用NSFetchedResultsController.However
第一个索引在表格上显示名称,出现的部分是 # 后跟字母。但我想像在本机联系人应用程序中那样做,即 #index 应该最后出现。
我使用了以下内容NSortDescriptor
:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"fullName" 升序:YES ];
这里的“fullName”是key
通过连接名字和姓氏组成的核心数据。并且节标识符是“fullName”的第一个字母,如果fullName
不以字母开头,则其节标识符是#。
我已经搜索过它并NSDiacriticInsensitiveSearch
在NSortDescriptor
比较器中使用了它,但它没有用。如果有人有任何想法,请告诉我。
这是我的代码:
NSString *special = @"\uE000";
if ([[self sectionName:contactName] isEqualToString:@"#"]) {
sortName = [special stringByAppendingString:contactName];
}
else{
sortName = contactName;
}
[newContact setValue:[self sectionIdentifier:sortName] forKey:@"sectionIdentifier"];
[newContact setValue:sortName forKey:@"sortName"];
这是排序描述符:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortName" ascending:YES];
[self sectionIdentifier:sortName]
如果 sortName 以非字母开头,则此方法返回 #,否则返回其开头的字母。
newContact 是实体的对象。