testTable という名前のテーブルがあるとします。
(NSNumber*) numValue
(NSString*) stringValue
次に、その中に約 50 のレコードがあるとします。numValueレコードごとに異なります。このように NSFetchedResultController を作成すると:
NSFetchRequest *request = [[NSFetchedResultsController alloc]
initWithFetchRequest: request
managedObjectContext: context
sectionNameKeyPath: @"numValue"
cacheName: @"testTable"]];
そしたら50区画出ます。
私の質問は次のとおりです: 2numValueつのセクションを取得するにはどうすればよいですか?xnumValuex
次のx = 15ようになります。
NSFetchRequest *request = [[NSFetchedResultsController alloc]
initWithFetchRequest: request
managedObjectContext: context
sectionNameKeyPath: @"numValue > 15"
cacheName: @"testTable"]];
考えられる解決策は次のとおりです。
- @Dimaが言ったように、エンティティを編集できます。
- では
numberOfSectionsInTableView:、セクション名を見て、それらを と比較できますx。次に、これらの名前を調べて、tableView:numberOfRowsInSection:必要なものを計算できます。でもそれも汚い感じ。最初のアプローチよりも優れていますが、それでもなおです。
更新: まあ、私はそれを行う3番目の方法をほぼ理解しました。@Dimaのリンクに感謝します。コードは次のとおりです。
[self setFetchedResultsController: [[NSFetchedResultsController alloc]
initWithFetchRequest: request
managedObjectContext: context
sectionNameKeyPath: [NSString stringWithFormat: @"numValue.compare(%f)", x]];
しかし、KVC 準拠には問題があります。引数を持つメソッド (セレクター) は明らかに KVC 準拠ではありません。回避策のアイデアはありますか?