0

NSFetchedResultsController を使用しており、エンティティの日付フィールドに基づいてテーブルに 2 つのセクションを作成したいと考えています。個々の日付に基づいてセクションを作成したくはありませんが、日付フィールドが nil であるセクションと、日付フィールドが nil ではないセクションが 1 つずつ必要です。

sectionNameKeyPathこれを達成するために を使用する方法はありますか? そうでない場合、取得した結果テーブルを nil と nil 以外の値に基づいてセクション化するにはどうすればよいですか?

4

1 に答える 1

1

私は次のことがうまくいくはずだと思います:

  • dateフィールドを最初のソート記述子として使用します。
  • 一時的な属性を定義し、sectionIdentifierそれを として使用しますsectionNameKeyPath
  • "0" または "1" のみを返す一時プロパティの getter 関数を定義します。最も単純なケース (キャッシュなし) では、次のようになります。

    - (NSString *)sectionIdentifier
    {
       if (self.date == nil)
          return @"0";
       else
          return @"1";
    }
    
  • カスタムを実装しますtitleForHeaderInSection:

    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
        id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
        if ([[sectionInfo name] isEqualToString:@"0"])
            return @"Date is nil";
        else
            return @"Date is not nil";
    }
    
于 2013-05-09T03:37:23.797 に答える