索引付けをサポートするコアデータを使用したUITableViewを実装しようとしています(例:側面に表示される文字と、それらに付随するセクションヘッダー)。私はすべて使用してコアデータなしでこれを実装するには問題がない:インデックス付きのコアデータバックアップされたUITableView
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
私はまた、インデックスを使用せずに、コアデータに裏付けされたのUITableViewを実装する問題はありません。
私が理解しようとしているのは、2つをエレガントに組み合わせる方法です。明らかにコンテンツを索引付けして再セクションすると、標準のNSFetchedResultsControllerを使用して、指定された索引パスで物を検索することはできなくなります。だから、NSArrayにNSArrayとインデックスされた内容のインデックス文字を保存しています。このすべては、表示のため正常に動作しますが、それは特に適切にこれらのメソッドを実装する方法を、行の追加と削除に来るとき、私はいくつかの本当の頭痛を持っている:それは私を返すのインデックスパスので
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller;
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath;
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type;
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;
ものと相関がありませんコアデータです。ユーザーが行を追加するときにインデックスNSArrayとNSDictionaryを再構築するだけで作業を追加できますが、削除するときに同じ作業を行うと、アプリケーション全体がクラッシュします。
シンプルなパターン/例がありますが、これがすべて正しく動作するようにここには記されていませんか?
編集:NSFetchedResultsControllerがこれをそのまま実行することはわかっていますが、私が望むのは連絡先アプリのような機能を複製することです。インデックスはその人の名の最初の文字です。
私は自分自身を十分にはっきりさせていないと思う。私は私のインデックスが連絡先アプリ、人の名の最初の手紙のようになりたい。 – rustyshelf
なぜ、firstNameをsectionNameKeyPathとして使用しないのですか? – gerry3
sectionNameKeyPath!??!?!?!どのように私はそれを欠場した!うわー、それは素晴らしい作品です。私は自分でコーディングする前にドコをよく読んでいたはずです...それに戻ってきて、うまく動いています。私はできればあなたに+5000を与えるだろう;) – rustyshelf