我有排序数组的问题。我有两个问题。 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
)
)
答案 0 :(得分:3)
NSArray *rightArray = [[NSArray alloc] initWithObjects:[mutArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 11)]], nil];
NSArray *sortedArray = [[rightArray lastObject] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"%@",sortedArray);
您的字符串位于数组中的数组中。获取rightArray
中的唯一对象并对其进行排序。
修改
对于第二个问题,您可以使用中间数据结构
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
答案 1 :(得分: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
)
亚历山大回答说,你没有传递一串字符串。