私は2つの配列を持っています。さんが言ってみましょう:別の配列と同じ順序で配列を並べ替える
array = "Dave", "Mike", "Joe", "Jason", "Kevin"
と
IQ = 110, 145, 75, 122, 130
私はIQによってそれらをソートしたいです。最高から最低まで私は1つの配列を並べ替えることができます...そして、私は戻って、それがどんな位置にあったかを確認してから、もう一方の配列を並べ替えます。これを行うにはより良い方法が必要であるようです。特に配列が大きくなる場合。
ここで私は今やっている方法です。
d1, d2, d3, d4, d5
は、変数IQ
です。私はsortBack
配列を使用して、別の配列を同じ順序で並べ替えます。
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:[NSString stringWithFormat:@"%d",d1], [NSString stringWithFormat:@"%d",d2],[NSString stringWithFormat:@"%d",d3], [NSString stringWithFormat:@"%d",d4],[NSString stringWithFormat:@"%d",d5], nil];
//sorting
[myArray sortUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
return [str1 compare:str2 options:(NSNumericSearch)];
}];
for(int i=0;i<5;i++)
{
if([[myArray objectAtIndex:i] integerValue]==d1)
{
sortBackArray[i]=1;
}
else if([[myArray objectAtIndex:i] integerValue]==d2)
{
sortBackArray[i]=2;
}
else if([[myArray objectAtIndex:i] integerValue]==d3)
{
sortBackArray[i]=3;
}
else if([[myArray objectAtIndex:i] integerValue]==d4)
{
sortBackArray[i]=4;
}
else if([[myArray objectAtIndex:i] integerValue]==d5)
{
sortBackArray[i]=5;
}
}
なぜこれのために2つの配列を維持していますか?名前とIQの値を持つ辞書の配列を持つ方がよいでしょう。次に、キーIQを使用してsortDescriptorを作成し、配列をソートできます。関連情報があるときは、常に一緒にしてください。 – Anupdas
さて、私はそれが行く方法かもしれないと思ったが、私は辞書のものと混同する傾向がある。私はもう一度それを見てみましょう。 –
データを構造化したままにするために、辞書やカスタムモデルオブジェクトを使用していないと非常に困難です。私は例を掲載しました。見てみましょう。 – Anupdas