testTable という名前のテーブルがあるとします。
(NSNumber*) numValue
(NSString*) stringValue
次に、その中に約 50 のレコードがあるとします。numValue
レコードごとに異なります。このように NSFetchedResultController を作成すると:
NSFetchRequest *request = [[NSFetchedResultsController alloc]
initWithFetchRequest: request
managedObjectContext: context
sectionNameKeyPath: @"numValue"
cacheName: @"testTable"]];
そしたら50区画出ます。
私の質問は次のとおりです: 2numValue
つのセクションを取得するにはどうすればよいですか?x
numValue
x
次の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 準拠ではありません。回避策のアイデアはありますか?