3

NSString を含む NSMutableArray の NSMutableArray をソートする簡単な方法はありますか?

これを行うための簡単な方法があるに違いないと確信していますが、見つけられないようです。

明確にするために、サブ配列のインデックス 3 にある NSString で最初の配列をアルファベット順に並べ替えたいと思います。

4

4 に答える 4

3

NSMutableArraytype のオブジェクトのみが含まれている場合は、次のNSStringようにします。

[myMutableArray sortUsingSelector:@selector(compare:)];
于 2010-10-26T19:20:44.757 に答える
3

「この機能を使用して、それを理解する」以外に実際にこれに答えている人を見たことがありません。そこで、実際に使えるコードをいくつか紹介します。

このカテゴリを .h ファイルの末尾に配置します (または任意の場所に配置し、並べ替えが必要な場所に .h をインポートします)。

@interface NSString (SortCompare)

-(NSInteger)stringCompare:(NSString *)str2;

@end

これを.mファイル(またはインポートしている.hの.m)に入れます

@implementation NSString (SortCompare)

-(NSInteger) stringCompare:(NSString *)str2
{
    return [(NSString *)self localizedCaseInsensitiveCompare:str2];
}

@end


次に、配列NSMutableArrayで sortUsingSelector: を呼び出して並べ替えを使用します。

[myArray sortUsingSelector:@selector(stringCompare:)];

NSアレイ:

[myArray sortedArrayUsingSelector:@selector(stringCompare:)];
于 2011-02-01T22:59:54.817 に答える
2

他の人が述べたように、NSArray にはcompare:それ自体をソートできるセレクターがないため、自分で定義する必要があります。compare:(NSArray *)otherArrayと呼ばれるメソッド(またはそれが何をするかをよりよく説明するもの)で NSArray にカテゴリを作成し、それを で使用しsortUsingSelector:ます。

必要に応じて、すべての文字列を並べ替える必要があるときに、すべての文字列を大きな配列に詰め込み、代わりにそれを使用することができます。書くコードが少し減るかもしれません。

于 2009-07-09T11:55:53.923 に答える
0

次のコマンドでキーで並べ替えることができます。

NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"key" ascending:NO];
[yourArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
于 2013-01-07T07:08:54.103 に答える