我无法对基于视图的tableview进行排序。我使用一个控制核心数据实体的arrayController。
我尝试选择一个列,在属性检查器中我用作排序键,相对于该列的属性名称并比较:作为选择器......当我构建并运行时,单击标题然后显示更改每次单击的箭头,但行没有任何反应。没有排序。
我该如何解决? 我想我错过了一些简单的东西,但我无法克服它。
答案 0 :(得分:1)
您可能需要考虑使用NSFetchedResultsController
。来自NSFetchedResultsController
的Apple文档,
使用获取的结果控制器有效地管理从Core Data获取请求返回的结果,以便为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;
}