グループ化されたUITableViewのセクションのNSManagedObjectがあります。 このオブジェクトは属性 "name"と "createdAt"を持っています。 セクションタイトルでは「名前」を使用したいが、「createdAt」でソートする。 ドキュメントによると、最初のsortDescriptorキーはNSFetchedResultsControllerのsectionNameKeyPathでなければなりません。NSFetchedResultsController - セクション名と異なるソート順
2つのsortDescriptorsを使用することを推奨しましたが、動作しません。セクションはまだ名前でソートされています。
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Object" inManagedObjectContext:[CoreDataHelper instance].managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSSortDescriptor *sortDate = [[NSSortDescriptor alloc] initWithKey:@"createdAt" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortName, sortDate, nil]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[CoreDataHelper instance].managedObjectContext sectionNameKeyPath:@"name"
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
return _fetchedResultsController;
}
素晴らしい!それはとても簡単です。いいえ、私は複数のsortDescriptorsの機能も理解していません。現在、私のオブジェクトの "名前"はユニークなので、この解決法は問題ありません。コードにも感謝します。 – Sebastian
@セバスチャン:どうぞよろしくお願いいたします。 –
答えをありがとう。 – coreDeviOS