Core Data在排序时返回错误,并在表中用法语显示空列表



我只看到一个空列表,我选择我的语言为法语。下面是一些与此相关的代码。

+ (NSFetchedResultsController *)fetchedResultsControllerForAirportTranslationsInLanguage:(NSString *)theLanguage inContext:(NSManagedObjectContext *)moc_ {
NSLog(@"language is %@",theLanguage);
NSFetchedResultsController *fetchedResultsController = nil;
AirportTranslationFetchRequest *request = [[AirportTranslationFetchRequest alloc] initWithLanguage:theLanguage inManagedObjectContext:moc_];
NSSortDescriptor *sortDescriptorCity = [[NSSortDescriptor alloc] initWithKey:@"city" ascending:YES];
NSSortDescriptor *sortDescriptorName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorCity, sortDescriptorName, nil];
[request setSortDescriptors:sortDescriptors];
fetchedResultsController = [[[XXXGMFetchedResultsControllerDoubleByte alloc] initWithFetchRequest:request managedObjectContext:moc_ sectionNameKeyPath:@"firstLetterOfCity" cacheName:nil] autorelease];
[sortDescriptorCity release];
[sortDescriptorName release];
[sortDescriptors release];
[request release];
NSError *error = nil;
if (![fetchedResultsController performFetch:&error]) {
    LogError(@"An error occured while performing fetch request: %@", error);
}
return fetchedResultsController;

}

它适用于所有其他语言,如中文、日语、韩语。

- (NSString *)firstLetterOfCity {
[self willAccessValueForKey:@"firstLetterOfCity"];
NSString *aString = [[self valueForKey:@"city"] uppercaseString];
NSLog(@"ABCD %@",aString);
NSString *stringToReturn = nil;
if (aString.length < 1) {
    stringToReturn = @"?";
}
else {
    stringToReturn = [aString substringToIndex:1];
}
[self didAccessValueForKey:@"firstLetterOfCity"];
return stringToReturn;

}

根据下面的日志,我猜Core Data无法处理法语中的特殊字符。

2015-03-27 11:51:17.543 XXX[1503:60b]义乌市

2015-03-27 11:51:17.543 XXX[1503:60b]YOGYAKARTA

2015-03-27 11:51:17.544 XXX[1503:60b]YONAGO

2015-03-27 11:51:17.544 XXX[1503:60b]YUZHNO SAKHALINSK

2015-03-27 11:51:17.545 XXX[1503:60b]城市ZADAR

2015-03-27 11:51:17.545 XXX[1503:60b]城市ZAGREB

2015-03-27 11:51:17.546 XXX[1503:60b]津巴布韦城市

2015-03-27 11:51:17.547 XXX[1503:60b]张家口市

2015-03-27 11:51:17.547 XXX[1503:60b]郑州

2015-03-27 11:51:17.548 XXX[1503:60b]珠海

2015-03-27 11:51:17.548 XXX[1503:60b]苏黎世

2015-03-27 11:51:17.549 XXX[1503:60b]CITY LAŞI

2015-03-27 11:51:17.549 XXX[1503:60b]CoreData:错误:(XXXGMFetchedResultsControllerDoubleByte)索引1025处提取的对象的节名"Z"不正常。对象必须按节名称排序'2015-03-27 11:51:17.553 XXX[1503:60b]+[XXXGMAirportTranslation fetchedResultsControllerForAirportTranslationsInLanguage:inContext:][Line 69][ERROR]执行提取请求时出错:ERROR Domain=NSCocoaErrorDomain Code=134060"操作无法完成。(Cocoa错误134060。)"UserInfo=0x168429f0{reason=索引1025处提取的对象的节名称"Z"不正常。对象必须按节名称排序。}

通过nil而不是firstLetterOfCity可以得到列表,但它没有排序。

当节名称和节索引标题之间存在差异时,通常会发生此崩溃

检查返回的章节索引标题数组,并与您的章节标题进行比较。

最新更新