我有一個NSManagedObject用於分組UITableView中的部分。 該對象具有「名稱」和「createdAt」屬性。 我想在te UI中使用「名稱」作爲節標題,但按「createdAt」排序。 根據文檔,第一個sortDescriptor鍵也必須是NSFetchedResultsController的sectionNameKeyPath。NSFetchedResultsController - 與部分名稱不同的排序順序
我建議使用兩個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
@Sebastian:不客氣。 –
感謝您的回答。 – coreDeviOS