私はContactBookアプリを作成しており、AddressBookから名前を取得してコアデータに保存しNSFetchedResultsController.However
、最初のインデックスを使用してテーブルに名前を表示し、最初に表示されるセクションにアルファベットが続きます。しかし、ネイティブの連絡先アプリのようにやりたいのです。つまり、#インデックスがついに来るはずです。
私は以下を使用しました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"];
そして、ここにソート記述子があります:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortName" ascending:YES];
[self sectionIdentifier:sortName]
このメソッドは、sortNameがアルファベット以外で始まる場合は#を返し、そうでない場合は開始元のアルファベットを返します。
newContactはエンティティのオブジェクトです。