2009-11-18 3 views
0

Account with Name과 accountNo 둘 다 NSString으로 가정합니다. 배열 정렬을 이름 또는 accountNo로 정렬하려고합니다. 정렬은 지역화해야합니다. 배열에하지만, 숫자 (100 99 전에 정렬)이 올바르게 정렬되지 않습니다 : Cocoa Touch에서 문자열 요소를 지역화하고 올바른 숫자로 포함하는 사용자 정의 개체로 배열을 정렬 할 수 있습니까?

내가 localizedCaseInsensitiveCompare을 통과 할 수있는 옵션을 가지고있는 가이드의 설명에 따라 NSSortDescriptors를 사용하는 경우

. 검색을 위해 NSNumericSearch 옵션을 트리거하는 방법을 찾지 못했습니다. 즉, sortedArrayUsingFunctions을 체인을 따라 모든 클래스의 함수로 사용해야 함을 의미합니다. 올바른 숫자 값으로 정렬 할 수는 있지만 현지화되지는 않았고 매우 기능적입니다. 당신이 두 질문에 대한 답변이있을 경우

(수치 올바른 종류 또는 지역화 및 숫자 올바른 종류와 sortFunctions와 SortDescriptors은) 나에게 모두

덕분에 각 속성에 대한

답변

1

당신이 만들 수있는 다른 NSSortDescriptor을 제공하십시오있는 당신은 정렬하고 싶습니다. 각 정렬 설명자는 다른 비교 선택자를 사용할 수 있습니다. 문자열은 localizedCaseInsensitiveCompare: 메서드를 사용할 수 있으며 숫자에는 compareNumeric:과 같은 사용자 지정 정렬 선택기를 사용할 수 있습니다.

그런 다음 당신은 그냥이 수행 compareNumeric:라는 방법을 정의하는 NSString에 카테고리를 추가 할 수 있습니다 후반 답변 죄송

- (NSComparisonResult) compareNumeric:(id)other { 
    return [self compare:other options:NSNumericSearch]; 
} 
+0

안녕 데이브, 내가 두 번째로 지금이 문제를 통해 발견 , 나는 그것을 마지막으로 해결하지 못했습니다. 가시성이 더 높기 때문에 NSNumericSearch 만 사용하기로했습니다. 실제로 예제가 요구 사항과 완전히 일치하지 않습니다. "123 Max"및 "4 Steve"와 같이 숫자와 문자가 모두 포함 된 문자열이 있습니다. localizedCaseInsensitiveCompare를 사용하면 Max first와 Steve second를 정렬합니다. 함수를 사용할 때 검색은 정확하지만 현지화되지는 않습니다. 아직 해결책을 찾지 못했습니다. 그러나 내가 가지고있는대로, 나는 그것을 제공 할 것이다. 답변 해 주셔서 감사합니다. – maxbareis