2012-01-08 1 views
4

내가 다음 코드 줄을 사용 거라고 :localizedCaseInsensitiveCompare :와 caseInsensitiveCompare :의 차이점은 무엇입니까?

[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 

'caseInsensitiveCompare 것은'내가 문자열을 사용하여 사용 해요 방법이다. 그러나, 내가 사용중인 것으로 표시된 예는 다음과 같습니다.

[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; 

(차이는 현지화 된 단어 임). 이 단어는 무엇을 하는가? '지역화 된'방법은 일반적인 방법과 어떻게 다른가요?

Apple 개발자 문서는이 두 방법이 어떻게 다른지에 대해서는별로 유익하지 않습니다.

+0

그것은 의미 단지 현지화 방법 (의를 당신의 응용 프로그램의 경우 하나 이상의 언어가 있다면, 그것을 사용해야합니다). – Emil

답변

10

NSString은 caseInsensitiveCompare와 localizedCaseInsensitiveCompare 두 가지 방법을 제공합니다.

특정 로캘은 서로 다른 정렬 기준을 정의 할 수 있습니다. 다양한 로케일 용으로 지역화 된 텍스트로 작업하는 경우 현지화 된 버전을 사용하십시오. 그렇지 않으면 표준 버전을 사용하십시오.

13

이는 비교시 비교할 때 국가 별 문자 집합을 사용함을 의미합니다. 예에서
는 폴란드어 언어 설정 국가 부르는 것들은에서, L와 M. 사이, 문자 L을 가지고

예에서

, 우리는 문자열이있을 때 : Ltest, Łtest, MTEST, ZTEST 문자열 :

을 caseInsensitiveCompare이 결과에 준다 : Ltest, MTEST, ZTEST, Łtest을
localizedCaseInsensitiveCompare이 결과에 준다 : Ltest, Łtest, MTEST, ZTEST

5

localizedCaseInsensitiveCompare:caseInsensitiveCompare: 지역화 된 버전이다. 영어 로케일에서 별다른 차이가 없으므로 예를 들어 ł, ą, ę 등의 폴란드어, ñ, é, á 등의 스페인어 또는 ç, è, ê의 프랑스어 등이 있습니다. 로케일에 따라 알파벳이 다른 위치에 있습니다.

5

localizedCaseInsensitiveCompare: 메서드는 데이터를 정렬 할 때 현재 로캘 ([NSLocale currentLocale])에 대한 규칙을 사용합니다. 이러한 규칙에는 번호 매기기 우선 순위, 비 ASCII 문자 순서 등이 포함됩니다.

기본적으로 문자 코드를 기반으로하는 주문을 기대하지 않는 한 현지화 된 방법을 사용해야합니다.

이전에 현지화와 함께 일하지 않은 경우, 나는 다음과 같은 링크를 체크 아웃하는 것이 좋습니다 :

관련 문제