1

配列の並べ替えに問題があります。2つの問題があります。1.次のコードでrightArrayをソートしても機能しません。2.iには、右の配列がソートされているときに、右の配列と比較してインデックスを変更する必要があるleftArrayもあります。

NSArray *rightArray = [[NSArray alloc] initWithObjects:[mutArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 11)]], nil];
NSArray *sortedArray = [rightArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"%@",sortedArray);

出力:上記のコードを使用してソートした後

2012-10-25 19:11:44.571 Converter[3511:207] (
    (
    USD,
    EUR,
    GBP,
    JPY,
    CAD,
    AUD,
    INR,
    CHF,
    CNY,
    KWD,
    SGD
)
)
4

2 に答える 2

3
NSArray *rightArray = [[NSArray alloc] initWithObjects:[mutArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 11)]], nil];
NSArray *sortedArray = [[rightArray lastObject] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"%@",sortedArray);

文字列は配列内の配列にあります。唯一のオブジェクトを取得しrightArrayて並べ替えます。

編集

2番目の質問では、中間データ構造を使用できます

NSMutableDictionary *temp = [[NSMutableDictionary alloc] init];
NSArray *keys = [rightArray lastObject]; 
NSArray *objs = [leftArray lastObject]; // presuming they're also an array in an array

for (int i = 0; i < [keys count]; i++) {
    // we'll use the dictionary to set an one-to-one relationship
    [temp setObject:[objs objectAtIndex:i] forKey:[keys objectAtIndex:i]];
}

NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSArray *sortedObjs = [temp objectsForKeys:sortedKeys notFoundMarker:[NSNull null]];
[temp release]; // if not using ARC
于 2012-10-25T14:09:26.160 に答える
0
NSArray *array =  @[@"USD",@"EUR",@"GBP",@"JPY",@"CAD",@"AUD",@"INR",@"CHF",@"CNY",@"KWD",@"SGD"];
NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"SortedArray:%@",sortedArray);

次のように出力されます。

SortedArray:(
    AUD,
    CAD,
    CHF,
    CNY,
    EUR,
    GBP,
    INR,
    JPY,
    KWD,
    SGD,
    USD
)

アレクサンダーが答えたように、あなたは文字列の配列を渡していない。

于 2012-10-25T14:17:55.270 に答える