状況: 「連絡先」エンティティと「合計」属性 (正または負または 0) を持つ CoreData データベース
目標: 3 つのセクションを持つ tableviewcontroller、1 番目の正の 2 番目の負の 3 番目 (ゼロ) "ARCHIVED"
これまでのところ: @selector(compare:) で記述子を並べ替えます (すべての連絡先のリストが必要なため、述語なし)
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Contact"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"moneySum" ascending:YES selector:@selector(compare:)]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.database.managedObjectContext
sectionNameKeyPath:@"sectionName"
cacheName:nil];
連絡先エンティティのカテゴリ:
- (NSString *)sectionName {
[self willAccessValueForKey:@"sectionName"];
NSString *sectionName;
double value = [[self valueForKey:@"moneySum"] doubleValue];
if (value > 0) sectionName = POS_SECTION;
else if (value < 0) sectionName = NEG_SECTION;
else sectionName = ARCHIVE_SECTION;
[self didAccessValueForKey:@"sectionName"];
return sectionName;
}
私は今3つのカテゴリを取得していますが、明らかにアーカイブを最後ではなく真ん中に並べ替えています.
sortDescriptors 配列に 2 番目の sortDescriptor を追加することを考えました (比較前: one) が、私にとって最も直感的な方法 (isEqualToNumber:) は、引数を指定できないため (@selector ( ..:) ) 明らかに機能しません。または私は間違っていますか?
申し訳ありませんが、このコーディング全体にはまったく新しいものです:)