1

こんにちは、このようなコアデータのテーブルに問題があります

+-----------------------+
|person                 |
+-----------------------+
|name                   |
|address                |
|birthDate              |
|gender                 |
+-----------------------+

私の FetchedResultController では、これを GenderMaleと で2 つのセクションにフェッチしFemaleます。そして問題は、セクションをそのセクションでソートし、5行のみに制限したいことです。Maleセクションでは、そのセクションでソートしbirthDate、制限なしFemaleでソートしたいですname

1 つの FetchedResultController でそれを実行できますか、または 2 つの FetchedResultController が必要です。または、それを行う別の方法があれば教えてください。

ありがとう

4

1 に答える 1

2

NSFetchedResultController独自のソート方法を定義すれば、1 つでも実行できます。次のようになります。

- (NSString *) sortBy
{ return (Male == self.gender ? self.birthDate : self.name); }

sortBy次に、コントローラーの構成で提供します。@Martin Rが指摘したように、ソートにObjective-Cメソッドを使用できない場合があることに注意してください。そうでない場合は、別の属性「sortOrder」を定義し、オブジェクトの作成時に計算します。

制限については、確かではありませんが、おそらくtableView:numberOfRowsInSection: Apple で達成できる可能性がある例を以下に示します。

- (NSInteger) tableView: (UITableView *) table 
  numberOfRowsInSection: (NSInteger) section
{
    id <NSFetchedResultsSectionInfo> sectionInfo = 
      [[<#Fetched results controller#> sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];
}

セクションが「男性」セクションの場合、おそらく「3」を返すことができます。

于 2013-05-03T04:53:37.583 に答える