2012-09-18 2 views
0

여기 내 상황입니다 :여러 배열 정렬

나는 6 개의 NSMutableArrays를 조작합니다. 그중 하나에 NSDate 개의 객체가 있고 다른 객체에는 NSNumber이 있습니다. 그것들을 채울 때 각각에 대해 addObject:을 사용하기 때문에 각 배열의 인덱스 0에는 날짜 배열의 인덱스 0에서 원하는 날짜의 모든 값이 들어 있습니다.

배열이 날짜 배열 (날짜 별, 오름차순)에 따라 정렬되도록하고 싶습니다. 즉, 정렬하는 동안 dates 배열의 행 5가 행 1로 이동되면 정렬해야합니다. 다른 모든 배열에도 적용될 수 있습니다. (이는 왜 물어하지 마십시오 주제에서 벗어난)

나는 이전에 CoreData를 사용했다,하지만 난 더 이상 사용해서는 안됩니다). CoreData에서, 나는 NSSortDescriptor를 사용할 수 있지만 나는

는 언제나처럼, 힌트/답변/솔루션 항상 감사합니다 :)

+2

날짜를 포함한 6 개의 데이터 항목을 모두 6 개의 다른 배열로 유지하는 대신 하나의 객체로 패키징 할 수 없습니까? 그런 다음 하나의 배열을 갖게됩니다. 그 배열을 날짜 속성으로 정렬하면됩니다. – Anurag

+0

네, 고마워요, 그건 술탄과 벤이 제안한 것입니다. 나는 내가 그렇게 생각조차하지 않았다는 것을 믿을 수 없다. – rdurand

답변

4

이이입니다 ... 여러 NSArray들과 함께 작업을 수행하는 방법에 대한 아무 생각이 없다 일반적인 문제. 다음 접근법을 사용하십시오.

  1. 여섯 개의 배열을 객체로 캡슐화합니다. 모든 인스턴스에는 6 개의 속성이 있습니다.
  2. [NSDate compare:]을 사용하여이 개체에 compare: 메서드를 구현합니다 (이 단계는 건너 뛸 수 있지만이 방법은 더 깔끔합니다).
  3. 이제 하나 개의 배열을 - 종류는 2 단계
+0

고마워. 내가 내 질문에 댓글을 달았을 때 나는 그 생각을하지 못했다고 나는 믿을 수 없다. – rdurand

2

난 당신이있는 NSArray는 NSDictionary 객체로 가지고에 대한 더 나은 솔루션을 생각에서 방법을 사용하여.

NSArray *allValues = [[NSArray alloc] init]; 
NSDictionary *dict = @{"Date" : [NSDate date], @"Key1" : @"Value1", @"Key2" : @"Value2"}; 

그런 다음 sortDescriptor로이 배열을 아무 문제없이 정렬 할 수 있습니다. 그리고 원하는대로 Comparator 나 Sort Descriptor를 사용할 수 있습니다.

+1

사실은 사전을 사용하는 것은 좋지 않다. 나는 여러 번 배열을 사용하여 다른 컨테이너에서 나를 눈이 멀게했다. 정말 고마워! – rdurand

1

배열에 저장하는 모든 항목을 단일 객체로 묶습니다. 이전 6 개 배열 각각은 속성이됩니다.

그 객체의 내부는

- (NSComparisonResult)compare:(YourClass *)otherObject { 
    return [self.date compare:otherObject.date]; 
} 

는 이제 배열을 정렬 할 수 있습니다 구현할 수 있으며 날짜별로 정렬합니다.

+0

감사합니다. 아마도 이런 식으로 할 것입니다. 그리고 미안하지만, @ 설화는 대답을 받아 들여야하기 때문에 2 분 일찍 비슷한 해결책을 게시했습니다 :) – rdurand