0

メソッドに従ってソートする NSSortDescriptor で初期化された NSFetchResultsController がありlocalizedCaseInsensitiveCompare:ます。

エンティティは姓でソートされますが、一部は姓を指定しないため、170 文字 (ASCII) が姓として設定されます (理由は聞かないでください。ソース コードはそのように処理されます)。私はむしろそれを変更しません)。ソートすると、これらの「姓なし」の人物が表ビューの上部に表示されます。私は彼らがその最後にいることを望みます。

私の場合 (FRC を使用しています)、特定の NSSortDescriptor を使用することはできないようですが、ここでのオプションは何ですか?

[編集] コンパレータ ブロックまたはカスタム コンパレータ メソッドは、NSFetchResultsController では機能しません

4

1 に答える 1

0

ソート記述子は SQLite データ ストアを操作できる必要があるため、選択肢は限られています。

データ モデルを編集して、並べ替え可能な属性を用意する必要があります。値を正確に計算する方法はユーザー次第ですが、属性を一時的なものにすることはできません。次のいずれかをお勧めします。

  1. サブクラスに実装willSaveして、並べ替えデータを作成/更新しますNSManagedObject
  2. または、ソートデータを依存キーにします(サブクラスKVOで , を再度使用します)NSManagedObject

並べ替えデータは次のように単純です。

self.sortValue = (self.lastName == 170 in ASCII ? @"ZZZZZZZZZZZZZZZ" : lastName)
于 2013-05-14T10:33:05.290 に答える