我正在制作一个联系簿应用程序,我从AddressBook获取名称并将它们存储在Core数据中,并使用NSFetchedResultsController.However第一个索引在表格上显示名称,然后出现的部分为#,后跟字母表.但我想这样做就像是在原生联系人应用程序,即#index应该到最后.
我使用了以下内容NSortDescriptor:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"fullName"ascending: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"];
Run Code Online (Sandbox Code Playgroud)
这是排序描述符:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortName" ascending:YES];
Run Code Online (Sandbox Code Playgroud)
[self sectionIdentifier:sortName] 如果sortName以非字母开头,则此方法返回#,否则返回它开始的字母表.
newContact是实体的对象.