2011-03-27 7 views
0

배열과 그 배열에서 데이터를 가져 오는 tableview가 있습니다. 아이폰에서 tableview를 볼 때, 그것의, ofc, 정렬되지 않은, 그리고 그것들을 나열한 것처럼 그것들을 썼다.테이블 뷰의 배열 정렬

  • D
  • G
  • F
  • S
을 : 나는 싶어

정렬 내있는 tableview의 배열, 그래서 그들은 다음과 같이 나열되지 않습니다

하지만 다음과 같이 대신 나열 :

  • B
  • C
  • D
  • E
  • 기타 ...

내가 어떻게 할 수 있습니까?

stationList = [[NSMutableArray alloc] init]; 
[stationList addObject:@"A"]; 
[stationList addObject:@"B"]; 
[stationList addObject:@"C"]; 

어떻게 내있는 tableview 배열에 배열을 넣기 : 여기

내 배열? 배열로드 :

NSString *cellValue = [stationList objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 
+1

NSMutableArray 용 API 문서 읽기 - 정렬 방법이 있습니다.또는 "sort nsmutablearray"에 대한 Google. – occulus

답변

4

사용 [stationList sortUsingFunction:compareLetters context:whateveryouwant_ornil]

그리고 당신의 예에서

NSComparisonResult compareLetters(id t1, id t2, void* context) { 

     do the tests you want beetween t1 and t2, and return the result 
     like : 

     if (the test) return NSOrderedDescending, NSOrderedAscending or NSOrderedSame 
} 

, 당신은 수행해야합니다

NSMutableArray stationList = [[NSMutableArray array]; 
[stationList addObject:@"A"]; 
[stationList addObject:@"B"]; 
[stationList addObject:@"C"]; 
[stationList sortUsingFunction:compareLetters context:nil]; 

NSComparisonResult compareLetters(id t1, id t2, void* context) { 
     return [t1 compare:t2]; 
} 
+0

"당신은 t1과 t2 사이에 원하는 테스트를합니까?" 나는 무엇을 시험해야합니까? 만약 바보 같은 질문이라면 미안 해요. –

+0

@ 패트릭 R : 이것은 당신이 분류하고 싶은 것들에 달려 있습니다. 문자열을 정렬하는 경우 [t1 compare : t2]를 호출하면 정수를 테스트하고 t1 == t2를 테스트하고 사용자 정의 객체를 테스트하면 t1.age 및 t2와 같이 테스트해야하는 것을 알 수 있습니다. 나이, ... – Oliver

+0

@ 패트릭 R : 전체 기능이 정렬 될 때까지 비교 함수가 배열 값의 다중 쌍으로 자동 호출됩니다. 두 매개 변수가 어떻게 정렬되어 있는지 테스트하고 반환해야합니다 – Oliver

2

이동을 아래의 튜토리얼로 정렬 NSArray, 그들은 NSArray를 분류하는 기본 기술을 설명했습니다.

또한 자습서 끝 부분에서 제공되는 샘플 코드를 다운로드 할 수도 있습니다. Here is the link.

+0

감사합니다, 아프보세요 :) –

0

몇 가지 간단한 단계를 수행 할 수 있습니다. 나는 어느 것을 사용하고 있는지. 나는 메모리 소비의 맥락에서 완벽하지는 않다. 하지만 내 응용 프로그램에서 나와 함께 일하고.

여기서 레코드는 NSMutableArray입니다. 컬럼 이름은 어느 Coulmn으로 정렬 할지를 결정합니다. 필자의 경우에는 정렬 할 열이 두 개 이상있었습니다. Sorting은 BOOL 데이터를 사용합니다.

내가 테이블 뷰를 다시로드하는 중입니다.

 


    NSSortDescriptor * frequencyDescriptor = [[NSSortDescriptor alloc] initWithKey:columnName ascending:YES]; 

    NSArray * descriptors = [NSArray arrayWithObjects:frequencyDescriptor, nil]; 
    [record sortUsingDescriptors:descriptors]; 
    [columnName release]; 
    [frequencyDescriptor release]; 
    [myTableView reloadData]; 


 

괜찮 으면 좋겠어요. 더 잘 만들 수 있는지 알려주세요.