0

これが私の状況です:

6 つの NSMutableArray を操作します。そのうちの 1 つにはNSDates オブジェクトがあり、他のオブジェクトには s がありますNSNumber。それらを入力するときは、それぞれに使用するaddObject:ため、各配列のインデックス 0 には、日付配列のインデックス 0 で日付に必要なすべての値が含まれます。

配列がすべて日付配列 (日付順、昇順) に従って並べ替えられていることを確認したいのですが、並べ替え中に日付配列の行 5 が行 1 に移動された場合、すべてに適用する必要があります。他の配列も同様です。

以前はCoreData を使用していましたが、もう使用しないでください (理由は聞かないでください。これはトピック外です ;) ) CoreData では を使用できましたNSSortDescriptorが、複数の s でそれを行う方法がわかりませんNSArray...

いつものように、ヒント/回答/解決策は常に高く評価されています:)

4

3 に答える 3

4

これはよくある問題です。次のアプローチを使用します。

  1. 6 つの配列をオブジェクトにカプセル化します。すべてのインスタンスに 6 つのプロパティがあります。
  2. compare:を使用して、このオブジェクトにメソッドを実装します[NSDate compare:](この手順はスキップできますが、この方法の方がクリーンです)。
  3. これで、配列が 1 つだけになりました。手順 2 の方法を使用して並べ替えます。
于 2012-09-18T08:43:18.573 に答える
2

NSDictionary オブジェクトの NSArray を使用する方が良い解決策だと思います。

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

次に、この配列を sortDescriptor で問題なくソートできます。そして、必要に応じて Comparator または Sort Deriptor を使用することもできます。

于 2012-09-18T08:43:59.837 に答える
1

配列に格納しているすべてのアイテムを単一のオブジェクトにラップします。前の 6 つの配列のそれぞれがプロパティになります。

そのオブジェクト内で実装できます

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

配列を並べ替えることができるようになり、日付順に並べ替えられます。

于 2012-09-18T08:45:15.400 に答える