0

couples別の動的配列からNSString-Objects()の配列を取得しましたvaluesFirstdance。文字列には常に整数が含まれていることを私は知っています。couples配列をソートするには、値を整数型にする必要があります。すべての配列値の型に変更するにはどうすればよいですか?

ありがとう

couples = [valuesFirstdance allKeys];
NSArray* couples2 = [couples sortedArrayUsingSelector:@selector(intValue)];
4

2 に答える 2

1

質問に直接答えるには:

NSMutableArray *integerArray = [[NSMutableArray alloc] initWithCapacity:couples.count];
for (NSString *s in couples) {
   [integerArray addObject:[NSNumber numberWithInteger:s.integerValue]];
}

ただし、次のように、文字列値に対して数値の並べ替えを行うこともできますNSNumericSearch

NSArray *sortedArray = [couples sortedArrayUsingComparator:^(NSString *o1, NSString *o2) {
    return [o1 compare:o2 options:NSNumericSearch];
}];
于 2013-03-03T13:54:57.983 に答える
0

NSStringと呼ばれるメソッドがintValueあります-それがあなたが探しているものです。

もちろん、より良い解決策は、NSNumbers の代わりにNSStrings の配列を持つことです。

カップル配列をソートするためにすべての配列値のタイプを変更する必要はありません - これを見てください:

NSArray *sortedArray = [couplesArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

NSString *firstString = (NSString*) obj1;
NSString *secondString = (NSString*) obj2;

if([firsString integerValue]<[secondString integerValue]) 
return (NSComparisonResult) NSOrderedDescending;
else if([firsString integerValue]>[secondString integerValue])
return (NSComparisonResult) NSOrderedAscending;

return (NSComparisonResult) NSOrderedSame;
                    }];
于 2013-03-03T13:30:04.890 に答える