휴 ... 무슨 제목. 그래서 API 호출에서 검색된 데이터가 할당 된 NSMutableArray가 있습니다. 필자는 API 호출 응답의 구조를 제어 할 수 없으며 제공된 형식으로 배열을 정렬하고 싶습니다.정렬 목표 -c 배열이 포함 된 객체가 포함 된 배열
이것은 (간단하게하기 위해) 바보 같은 예입니다 (다른 솔루션은 물론, 환영합니다),하지만 난 정렬 꿔 배열은 다음과 같이 표현 될 수있다 : 내가 알고
myObjects = array( 0 => object( name => @"Jack", favoriteNumbers => object( numbers => array( 0 => 7, 1 => 11, 2 => 6 ) ) ), 1 => object( name => @"Jill", favoriteNumbers => object( numbers => array( 0 => 1, 1 => 2, 2 => 3 ) ) ), 3 => object( name => @"Sally", favoriteNumbers => object( numbers => array( 0 => 68, 1 => 103, 2 => 99 ) ) ) )
을
NSSortDescriptor *sortDescriptor; sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO] autorelease]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; NSArray *sortByDurationArray = [myObjects sortedArrayUsingDescriptors:sortDescriptors]; // the variable "myObjects" holds the array representation from above
그러나 어떻게 각 사람이 선호하는 첫 번째 번호로 배열을 정렬하겠습니까?
원하는 결과는 다음 순서로 배열을 정렬합니다. Jill, Jack, Sally; Jill의 첫 번째 즐겨 찾기 번호는 1이므로 Jack 's는 7이고 Sally 's는 68입니다.
그래서 "색상"클래스에서 -compareFavoriteNumberToObject :와 같은 선택기를 만들어야한다고 말하면 NSComparisonResult를 반환하는 두 개의 "색상"개체를 비교할 수 있습니까? 그렇다면 배열을 정렬하기 위해 이렇게할까요? [myObjects sortUsingSelector : @selector (compareFavoriteNumberToObject :)]; –
그래, 그 말이 맞는 것 같아. 엄밀히 말하면'-compareFavoriteNumberWithColor :'로 가겠다. 왜냐하면 어떤 객체도 사용할 수 없기 때문이다. –