2011-12-22 4 views
5

가능한 중복 :
What is the most efficient way to sort an NSSet?objective-c NSStrings의 NSMutableSet을 정렬합니까?

저는 현재 문자열 목록을 다음과 함께 NSMutableSet 있습니다. 예를 들면 : 이 { "A"@ "g"@ "F"@ "E"@ "D"@ "C",,,,, @}

누군가가 말해 주시겠습니까 나는이를 정렬 할 수있는 방법 값은 알파벳 순입니까? sortedArrayUsingDescriptors:을 사용하여이를 수행 할 수 있습니까?

+1

http://stackoverflow.com/questions/1351182/how-to-sort-a-nsarray-alphabetically –

+1

위 게시물의 선택자는 NSSet에서 사용할 수 있습니다. 더 이상 설정되지 않습니다. 배열은 순서가 있고, 배열은 순서가 없습니다. –

+0

나는이 질문이 ** ** dup이 아니라고 말할 것이다. 구체적으로 말하자면, 다른 일반적인 질문은이 특정 사례에서 설명자를 작성하는 방법에 대한 도움이 전혀 없으며 처음 보이는 것만 큼 명확하지 않기 때문입니다. "그러나 나는 기본으로 정렬하지 않으려합니다. 객체의 키에, 객체 자체를 기준으로 정렬하고 싶습니다. " 물론 대답은 "자체"키가 당신에게 그것을 제공하지만, 키 - 값 코딩을 앞뒤로 구분하는 것을 모르는 사람들에게는 특히 명확하지 않습니다. :-) – dgatwood

답변

15

물론, 당신이 방법을 사용할 수 있습니다 : 이것은 단지 키 "설명"을 지정하는 새 정렬 디스크립터를 생성

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES]; 
NSArray *sortedArray = [mySet sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; 

을 (있는 NSString은 -description 방법을 제공 그 문자열을 반환합니다). 그런 다음 해당 정렬 설명자를 포함하는 배열을 매개 변수로 전달하여 모든 NSSet에 보낼 수있는 -sortedArrayUsingDescriptors:에 전달합니다.

+0

"self"를 키로 사용하면 동일한 결과를 얻습니다. 설명 키를 요청하면 실제로 추가 작업을하고 있다고 생각합니다. 구체적으로 설명하면, 설명 메소드를 호출하여 정렬에 사용할 값을 얻은 것 같습니다. 실제로 설명의 설명을 가져옵니다. – dgatwood

+0

@dgatwood 당신이 나를 때렸어. 방금 NSString 배열을 정렬하는 코드를 작성하고 키에 @ "self"를 배치하기로 결정했습니다. 대안이 있었는지 확인하기 위해 여기에 왔습니다. – pnizzle

+0

@dgatwood 틀린 것은 아니지만, * description *을 사용합니다. 배열에 문자열이 아닌 객체가 포함되어 있어도 조금 더 강력합니다. OP가 객체가 문자열이라는 것을 명시했지만, 동시에 추가 작업의 양은 무시할 수 있기 때문에 이것이 바람직한 지 아닌지는 의견의 문제입니다. – Caleb

-2

NSSets는 순서가 지정되지 않은 모음입니다. 정렬 된 컨테이너가 필요하면 NSArray를 사용하십시오.

1

나는이 질문이 Sorting NSSet이 당신의 질문에 대한 대답이라고 가정 할 것입니다. 클릭의 하드 ... 들어

[mySet sortedArrayUsingDescriptors:descriptors];