2012-04-25 2 views
0

숫자 (거리)에서 작동하는이 코드를 사용하면 가장 가까운 거리에서 정렬 할 수 있습니다. 그러나 나는 비슷한 것을하고 싶지만 알파벳 순서로 정렬하고 싶다. 그래서 self.names를 본질적으로 사전 순으로 정렬해야합니다. 또한, 나는 결국 알파벳 순으로 self.names를 정렬하고 싶습니다. 그리고 만약 당신이 동일한 이름을 가지고 있다면, 그것들을 거리별로 정렬하십시오. 이것이 가능한가?알파벳순으로 클래스 인스턴스 정렬

- (NSComparisonResult)sortByDistFromVor:(radiostations *)anObject 
{ 

    if ([self.distFromVor doubleValue] < [anObject.distFromVor doubleValue]) { 
     return NSOrderedAscending; 
    } else if ([self.distFromVor doubleValue] > [anObject.distFromVor doubleValue]) { 
     return NSOrderedDescending; 
    } 
    return NSOrderedSame; 
} 

답변

2

문자열 비교를 구현, 그래서 (이름이 규칙에 따라 대문자로되어야한다)를 radiostations 클래스는 같은 이름의 비교입니다 구현할 수 있습니다

- (NSComparisonResult)sortByName:(radiostations *)anObject { 

    return [self.name compare:anObject.name]; 
} 

그리고 당신은 설명 된대로 차 종류를 얻을 수 :

- (NSComparisonResult)sortByNameThenDistance:(radiostations *)anObject { 

    NSComparisonResult result = [self sortByName:anObject]; 
    return (result == NSOrderedSame)? [self sortByDistFromVor:anObject] : result; 
} 
+0

알파벳순으로 훌륭합니다. 그러나 2 차 정렬을 사용하면 "NSComparisonResult '(일명'int ')의 암시 적 변환이 ARC와 함께 허용되지 않습니다." 및 "결과 형식 'ID'가있는 함수에서 'NSComparisonResult'(일명 'int')를 반환하는 포인터 변환에 호환되지 않는 정수 – StarvingPilot

+0

오류가 발생한 줄은 – danh

+0

은 (result == ........ : result; – StarvingPilot

관련 문제