【发布时间】:2011-05-30 20:00:04
【问题描述】:
我有一个带有期刊部分名称的文章数据库。一篇是“Journal of Applied Physics”,另一篇是“JOURNAL OF APPLIED PHYSICS”。当我使用
[[NSSortDescriptor alloc] initWithKey:@"Journal" ascending:YES elector:@selector(caseInsensitiveCompare:)]
要获取数据,它会给我错误消息。
The fetched object at index 501 has an out of order section name 'JOURNAL OF APPLIED PHYSICS. Objects must be sorted by section name'
我已经在使用不区分大小写的比较,为什么这不起作用?帮忙?
======= 用于获取数据的代码 =======
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Article"
inManagedObjectContext:SharedMOC];
[fetchRequest setEntity:entity];
NSSortDescriptor *journalSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Journal"
ascending:ascending
selector:@selector(caseInsensitiveCompare:)];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:journalSortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *a = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:SharedMOC
sectionNameKeyPath:[self selectedSortSection]
cacheName:cacheName];
【问题讨论】:
-
Q1:如何创建获取请求? (请输入代码) Q2:
@"Journal"是您排序依据的属性的名称吗? -
谢谢。在那种情况下,
Journal是 NSString 吗?例如,如果Journal是另一个实体,则您的密钥路径应该是Journal.name。 -
是的,Journal 是一个 NSString。当使用其他键路径进行排序时,获取工作正常,只是使用它给出错误消息的 Journal。我认为这是因为它有两篇文章,期刊相同,但大小写不同。
-
酷。你的
[self getSortDescriptor]方法......它返回什么?我的意思是,我看到您创建了一个 NSSortDescriptor 并将其添加到sortDescriptors数组中...但是您从未明确将该数组设置为 fetchRequest... 除非在getSortDescriptor中发生类似的事情?
标签: cocoa-touch ios sorting core-data