【发布时间】:2013-08-14 18:51:12
【问题描述】:
Error fetching: Error Domain=NSCocoaErrorDomain Code=134060
"The operation couldn’t be completed. (Cocoa error 134060.)"
UserInfo=0x132eb960 {reason=The fetched object at index 76
has an out of order section name 'å. Objects must be sorted by section name'}
我查了一下,还有其他同名的问题,但是在这种情况下,问题是由于变音字母符号而出现的。
- (NSFetchedResultsController *)fetchedResultsControllerWithPredicate:
(NSPredicate *)aPredicate {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
fetchRequest.entity = [Word MR_entityDescription];
[fetchRequest setFetchBatchSize:20];
[fetchRequest setPredicate:aPredicate];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES
selector:@selector(localizedCompare:)];
fetchRequest.sortDescriptors = @[sortDescriptor];
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:localContext
sectionNameKeyPath:@"name.stringGroupByFirstInitial" cacheName:nil];
aFetchedResultsController.delegate = self;
NSError *anyError = nil;
if (![aFetchedResultsController performFetch:&anyError]) {
NSLog(@"Error fetching: %@", anyError);
}
return aFetchedResultsController;
}
如果我将localizedCompare: 替换为compare:,则不会出现提取错误,
但是有些索引的顺序错误,并且没有显示部分。
【问题讨论】:
-
它们按什么顺序排列?我希望
localizedCompare:是正确的答案。 -
@TomHarrington 'localizedCompare:' 为获取请求提供了一条错误消息(我在帖子开头写了它)。
-
localizedCompare:返回的结果与使用其自己的本地化比较实现的 SQLite 支持的持久存储的获取请求返回的结果不同。当涉及到“不寻常”的角色时,这一点尤其明显。字符“Æ”是另一个给系统带来麻烦的字符,许多冰岛语和斯堪的纳维亚语字符也是如此。两年来我一直在努力解决这个问题,但无济于事。我希望你能得到解决方案。
-
@MartinR 所以,如果我理解正确,localizedCompare: 只有在 sectionNameKeyPath 为 nil 时才有效?
-
@Shmidt:我已经删除了我的评论,因为我不确定了。也许 gschandler 给出了正确的理由。
标签: objective-c core-data ios6 nsfetchedresultscontroller