【发布时间】:2014-07-06 21:21:33
【问题描述】:
我试图从我的 Core Data 支持的 NSArrayController 中检索排序对象数组。一旦 ManagedObjectContext 准备就绪,我会触发一个通知,拥有 NSArrayController 的对象会监听该通知,然后使用 sortDescriptors 设置获取请求。但是,数据永远不会排序。我已经为此苦苦思考了好几个小时了。
我得到了数组中的预期数据,但它根本没有排序。有人知道我哪里出错了吗?
// Elsewhere in code
...
_charts = [[NSArrayController alloc] init];
_charts.entityName = @"Charts";
...
// When Cored Data and Managed Object Context is ready
-(void)mangagedObjectContextReady
{
NSManagedObjectContext *moc = ((AppDelegate *)[NSApp delegate]).managedObjectContext;
_charts.managedObjectContext = moc;
_charts.usesLazyFetching = NO;
_charts.automaticallyPreparesContent = YES;
_charts.automaticallyRearrangesObjects = YES;
// Create fetch request for data
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:@"Charts" inManagedObjectContext:moc];
// Create the sort descriptors for the Charts entity
// Name and chartType are properties on the entity "Charts"
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSSortDescriptor *chartTypeDescriptor = [[NSSortDescriptor alloc] initWithKey:@"chartType" ascending:YES selector:@selector(caseInsensitiveCompare:)];
fetchRequest.sortDescriptors = @[nameDescriptor, chartTypeDescriptor];
NSError *error = nil;
BOOL success = [_charts fetchWithRequest:fetchRequest merge:NO error:&error];
if(!success)
NSLog(@"Error %@:", [error localizedDescription]);
else {
[_charts rearrangeObjects];
[_tv reloadData];
}
我使用这个方法来获取一个数组或排序的对象..但是数据没有按照上面的排序描述符排序?
[_charts.arrangedObjects objectAtIndex:row]
【问题讨论】:
标签: cocoa core-data nsarraycontroller