현지화 된 정렬로 iPhone 가져 오기 요청
-
18-09-2019 - |
문제
핵심 데이터 모델에서 현지화 된 데이터를 정렬하려고합니다. 내 코드 :
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
그리고 그것들을 비교합니다.
제휴하지 않습니다 StackOverflow