1

このソート記述子を使用します

NSArray *sortedObjects = [self.array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES], nil]];

結果は10で、11は1と一緒にソートされ、2の前に配置されます。

index is 1/12
index is 10/12
index is 11/12  
index is 2/12  
index is 3/12
index is 4/12
index is 5/12
index is 8/12
index is 9/12

どうすればこれを回避できますか?

4

2 に答える 2

1

との独自の比較を使用してください

- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr

または
カスタムコンパレータを許可する別の種類。

次に、日を分割し、月と日を比較します。

于 2013-01-14T01:08:45.393 に答える
0

そのクラスがあなたが印刷しているアイテム、おそらく文字列であるかどうかはわかりません。これは、「/」文字の値が「0」よりも大きいために発生します。

比較するには、カスタムメソッドまたはブロックを使用する必要があります。したがって、キーだけでなく、セレクターも初期化します。

NSSortDescriptor* sd= [[NSSortDescriptor alloc]initWithKey: @"index" ascending: YES selector: @selector(customCompare:)];
NSArray *sortedObjects = [self.array sortedArrayUsingDescriptors: @[ sd ] ];

customCompare:メソッドで、オブジェクトを比較する必要があります。

于 2013-01-14T01:26:00.420 に答える