문제

핵심 데이터 모델에서 현지화 된 데이터를 정렬하려고합니다. 내 코드 :

NSEntityDescription *entityDescription = [NSEntityDescription entityForName: entityDescriptionValue
                                                     inManagedObjectContext: context];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity: entityDescription];

[fetchRequest setPredicate: predicate];

NSSortDescriptor *sortBy = [[NSSortDescriptor alloc] initWithKey: @"name" ascending: YES selector: @selector(localizedCompare:)];
[fetchRequest setSortDescriptors: [NSArray arrayWithObject: sortBy]];
[sortBy release];

그러나 객체를 얻을 때 여전히 원래 값 (비 지역화 된 데이터)을 정렬합니다.

내가 옳지 않은 것은 무엇입니까?

도움이 되었습니까?

해결책

현지인을 어떻게 얻습니까? names Coredata Entity에서? 그게 아니고 localizedCompare: 현지화 된 문자열 버전을 마술처럼 검색하고 비교합니다. 대신, 현지화 된 정렬 주문을 동일한 문자열로 사용합니다. 포함 된 배열의 정렬 된 버전 @"England", @"France", @"Germany" 어느 나라에서나 동일 할 것입니다 ... 악센트가있는 캐릭터 등을 포함하지 않습니다. 결과 localizedCompare: 두 언어가 문자마다 다른 정렬 순서를 사용할 때만 변경할 수 있습니다.

무언가를 회수하고 싶다면 Localizable.strings Coredata Entities의 속성을 기반으로 수동으로 수행해야합니다. Coredata의 sqlite 백엔드는 페치 요청 수준에서 처리하지 않습니다. 따라서 먼저 항목을 가져와야합니다. NSArray, 그런 다음 사용하여 정렬해야합니다 sortedArrayUsing...: 현지화 된 이름을 검색하는 방법을 전달함으로써 NSLocalizedString 그리고 그것들을 비교합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top