我无法对基于视图的表格视图进行排序。我使用一个控制核心数据实体的arrayController。
我尝试选择一列,在属性检查器中,我使用相对于该列的属性名称作为排序键并比较:作为选择器...当我构建和运行时,我单击标题,现在显示更改的箭头每次点击,但行没有任何反应。没有排序。
我该如何解决?
我想我错过了一些简单的东西,但我无法克服它。
我无法对基于视图的表格视图进行排序。我使用一个控制核心数据实体的arrayController。
我尝试选择一列,在属性检查器中,我使用相对于该列的属性名称作为排序键并比较:作为选择器...当我构建和运行时,我单击标题,现在显示更改的箭头每次点击,但行没有任何反应。没有排序。
我该如何解决?
我想我错过了一些简单的东西,但我无法克服它。
您可能需要考虑使用NSFetchedResultsController
. 从 Apple 文档中NSFetchedResultsController
,
您使用获取的结果控制器来有效地管理从核心数据获取请求返回的结果,以便为 UITableView 对象提供数据。
代码如下所示,其中提供排序描述符的行以NSSortDescriptor
.
- (NSFetchedResultsController *)fetchedResultsController
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntityName"
inManagedObjectContext:yourManagedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"YourSortKey"
ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *fetchedObjects = [yourManagedObjectContext executeFetchRequest:fetchRequest
error:&error];
if (fetchedObjects == nil) {
// Handle the error
}
yourFetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
return yourFetchedResultsController;
}