2012-04-13 5 views
0

가스 소비량을 계산하는 작은 프로그램을 만들었습니다. 최종 뷰 컨트롤러에서 소비량을 계산하는 데 필요한 각 데이터 항목마다 하나의보기 컨트롤러가 있습니다. 그래서 첫 번째 컨트롤러에 구동 거리를 입력하면 가스가 다음 컨트롤러에서 연료가 공급됩니다. 결과를 표시하는 컨트롤러에서 현재 날짜가 추가됩니다. 모든 항목은 plist 파일에 나중에 테이블 뷰와 함께 사용하기 쉽게 문자열로 저장됩니다 (날짜 제외).어레이를 포함하는 정렬 배열 ios

이제이 데이터를 요약보기 컨트롤러에서 열고 테이블 뷰를 채 웁니다. 어레이 (1) :있는 NSDate 어레이 2는 NSString를 나타내는 숫자 어레이 3 :있는 NSString 개수를 나타내는

I 현재

I는 (a 테이블의 열에 유사) PLIST 파일 3 개 어레이를 검색해야 내 tableview 채우는 방법을 알고 있지만 정렬 주위에 내 머리를 감쌀 수 없습니다. 각 배열의 모든 요소를 ​​하나씩 가져 와서 새로운 배열에 추가하는 방식으로 열 접근법을 테이블 행 기반으로 변경하려고 시도했습니다. 각 배열에는 날짜와 두 개의 숫자 (문자열)가 있습니다.

sortdescriptors 설정을 시도했지만 선택기를 사용해 보았지만 작동 방법을 완전히 이해하지 못하는 것 같습니다. 개인적으로 나는 예제를 선호하므로이 주제에 대한 자습서를 찾고있었습니다. 개발자 다큐멘터리는 그다지 도움이되지 못했습니다.

이 문제에 대한 완전한 예제를 기대하지는 않지만 내 데이터를 정렬하는 방법과 전체 데이터 배열을 정렬하는 데 가장 좋은 방법에 대한 지침이 될 것입니다.

어떤 포인터 나 예를 들어 주셔서 감사합니다.

편집 : 마침내 모든 "표선"을 사전에 "행"으로 가져 왔습니다. 이제 열의 키로 단일 열에 액세스 할 수 있습니다. 그리고 이것은 sortdescriptor를 사용하여 내 사전의 배열에서 오름차순 또는 내림차순으로 stringvalues를 정렬 할 수도 있습니다.

이것은 가장 우아한 방법은 아니지만 지금 내가 원하는 것을 할 수 있다고 생각합니다. "표"비교를 사용하지 마십시오.하지만이 점을보다 쉽게 ​​파악할 수 있습니다.

누구든지 좋은 배열 자습서에 대한 지침을 가지고 있다면, 나는 감사 할뿐입니다.

-

답변

2

난 당신이 정렬하는 방법에 정말 분명 아니지만, 어쩌면 당신이 뭔가를 적용 할 수는 (값 형식의 NSNumber와 "행"@ 키로 사전 각의 배열을 정렬) 우선, 비교 결과 기능합니다

static NSComparisonResult compareRowNumbers(NSDictionary *dict1, NSDictionary *dict2, void * context) { 

    if ([[dict1 objectForKey:@"row"] intValue] < [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedAscending;} 
    if ([[dict1 objectForKey:@"row"] intValue] > [[dict2 objectForKey:@"row"] intValue]) {return NSOrderedDescending;} 

    return NSOrderedSame; 

} 

는 그런 다음과 같이 사용할 수 있습니다 -

NSMutableArray *myArray = [NSMutableArray array]; 

// populate your array with loads of stuff (in this case, NSDictionaries as decribed above) 
// now sort it 

[myArray sortUsingFunction:compareRowNumbers context:NULL]; 

을 ... 당신의 배열은 자동적으로 정렬됩니다.

+0

나는 내 배열을 실제로 날짜순으로 정렬하기 위해 대답을 사용할 수 있다고 생각합니다. 그러나 나는 그것을하는 방법을 힘든 방법을 발견하고, 마침내 내가 정확히 전에 여기에서 찾은 것을 발견 : http : //stackoverflow.com/questions/7507457/sort-array-of-dictionaries-by-nsdate 링크에, 내가 필요로하는 것이 더 명확 해지고있다. 실마리가 될지 모르지만 나는 지난 10 월에 책으로 처음부터 프로그래밍을 시작했고 아직 배우고 있습니다.다음 번에 단일 요소를 서로 비교해야 할 때 대답을 시도하겠습니다. 하지만 고마워. – Mike73