1

コアデータストア内にPersonエンティティがあるとします。私は、すべてのPersonエンティティを示すNSFetchedResultsControllerによって占められているUITableViewを持っています。もちろん、Personエンティティにはnameプロパティがあります。これはオプションです。 A-Zをアルファベット順に表示したいと考えています。これを見るユーザーは、名前のついた人物を最初に見たいと思っています。もっと気になる人物だからです。したがって、コントローラがイニシャライザで使用するソート・ディスクリプタでは、ヌル以外の名前のエンティティが最初に表示され、次にヌル・ネームが表示されます(Person)。フェッチされた結果コントローラのソート、最後の空の文字列

オプションは限られています。私はNSStringで提供されている特定のコンパレータを使用することはできませんが、そのいずれも私の基準を満たしていません。一時的な値をソートすることはできません。私はゼロ幅の空白をデフォルト値として使用しようとしましたが、Core Dataは明らかに空白を削除します。思考?

答えて

1

fetchedResultsControllerのセクションは、テーブルビューに表示しているセクションと一対一で対応する必要はありません。今、(null)、A、B、C、D、...などのようなセクションがあります。しかし、ビューコントローラがどのようにセクションを表示するかを変更することができます。テーブルビューのセクション0を設定すると、最後のセクション(名前なしセクション)がセクション0を指すまで、fetchedResultsControllerのセクション1と1-> 2、2-> 3 ...が表示されます。

これは複雑ではありませんそれはあなたのコードに混乱を追加することができます。したがって、fetchedResultsControllerのindexPathとセクションをtableviewのindexPathとセクションに変換することを扱う別のオブジェクトを作成することをお勧めします。 (また、「名前なし」セクションがなく、「名前なし」セクションのみがある場合も対応してください)。

これが複雑すぎると思われる場合は、より簡単な解決策は、hasNameのプロパティを追加し、それを最初にソートすることです。人物の名前のカスタムセッターを作成し、hasNameプロパティも設定すると、このプロパティを簡単に同期させることができます。

+0

名前は1つのセクションにしか表示されませんが、 'hasName'の提案はうまくいくように聞こえます。 –

関連する問題