2011-09-17 11 views
0

이 코드를 사용하여 nsmutablearray를 정렬했지만 NSMutablearray를 다시 보내는 방법은 무엇입니까? 내 mutablearray 나중에 정보를 추가하기 때문에이 필요합니다.mutablensarray를 정렬하는 방법은 무엇입니까?

- (NSArray를 *) trierTableau : (있는 NSMutableArray *) ptableau champsFiltre : (있는 NSString *) 챔피언 귀하의 NSMutableArray 현재 위치에서, 당신은 할 수 정렬 할 경우 {

NSSortDescriptor *lastDescriptor = 
[[[NSSortDescriptor alloc] 
    initWithKey:champs 
    ascending:YES 
    selector:@selector(localizedCaseInsensitiveCompare:)] autorelease]; 

NSArray * descriptors = [NSArray arrayWithObjects:lastDescriptor, nil]; 
NSArray * sortedArray = [ptableau sortedArrayUsingDescriptors:descriptors]; 

return sortedArray; 

}

답변

0

sortedArrayUsingDescriptors: 대신 sortUsingDescriptors:을 호출하면 배열의 정렬 된 사본이 반환됩니다. sortUsingDescriptors:은 기존의 NSMutableArray을 정렬합니다.

-(void)trierTableau:(NSMutableArray*)ptableau champsFiltre:(NSString*) champs { 
    NSSortDescriptor *lastDescriptor = 
    [[[NSSortDescriptor alloc] 
     initWithKey:champs 
     ascending:YES 
     selector:@selector(localizedCaseInsensitiveCompare:)] autorelease]; 

    NSArray * descriptors = [NSArray arrayWithObjects:lastDescriptor, nil]; 
    [ptableau sortUsingDescriptors:descriptors]; 
} 

이렇게하면 NSMutableArray을 반환 할 필요가 없습니다.

실제로 배열의 정렬 된 복사본이 필요한 경우 새로운 NSMutableArray을 만들고 addObjectsFromArray:을 사용하여 요소를 복사 한 다음 sortUsingDescriptors:을 새 배열에 사용해야합니다. 그러나 기존의 NSMutableArray을 정렬하는 것이 아마도 당신이 원하는 것이라고 생각합니다.

관련 문제