web-dev-qa-db-ja.com

1つの属性に基づいてオブジェクトのNSArrayをソートする方法

管理対象オブジェクトの配列をアルファベット順に並べようとしています。それらを並べ替える必要がある属性は、管理対象属性の1つであるオブジェクト(NSString)の名前です。現在、すべての名前を文字列の配列に入れ、次にsortedNameArray = [sortedNameArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];を使用して、オブジェクトを含む配列にそれらを列挙しています。これは、2つの名前が同じ場合にバラバラになり、1つの属性でソートできるようにする必要があります。これを行うにはどうすればよいですか?

30
Jackelope11

NSSortDescriptorを使用します。ドキュメントを検索するだけで、すぐにコピーできる非常に簡単な例がいくつかあります。これは簡単な例です:

NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc] initWithKey:@"MyStringVariableName" ascending:YES];
NSArray *descriptors = [NSArray arrayWithObject:valueDescriptor]; 
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:descriptors]; 

それと同じように、ソートされた配列があります。

83
Dancreek

NSSortDescriptorを使用してこれを行うことができます。

例えば。

`NSSortDescriptor *valueDescriptor = [[NSSortDescriptor alloc]initWithKey:@"distance" ascending:YES];`

//ここでは、距離の代わりにソートしています。独自のキーを作成する必要があります。

NSArray * descriptors = [NSArray arrayWithObject:valueDescriptor];
NSArray *sortedArray=[yourArray sortedArrayUsingDescriptors:descriptors];`
0
Annu