Iphone 无法对数组进行排序

Iphone 无法对数组进行排序,iphone,objective-c,xcode,nsarray,Iphone,Objective C,Xcode,Nsarray,我对数组排序有问题。我有两个问题。 1.使用以下代码排序rightArray无效。 2.我还有一个leftArray,当右数组排序时,它的索引应该相对于右数组进行更改。可能吗 NSArray *rightArray = [[NSArray alloc] initWithObjects:[mutArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 11)]], nil]; NSArray *sort

我对数组排序有问题。我有两个问题。 1.使用以下代码排序rightArray无效。 2.我还有一个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
)
)
字符串位于数组中的一个数组中。获取
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
NSMutableDictionary*temp=[[NSMutableDictionary alloc]init];
NSArray*键=[rightArray lastObject];
NSArray*objs=[leftArray lastObject];//假设它们也是数组中的一个数组
对于(int i=0;i<[键计数];i++){
//我们将使用字典设置一对一关系
[temp setObject:[objs objectAtIndex:i]forKey:[keys objectAtIndex:i]];
}
NSArray*sortedKeys=[使用selector:@selector(不区分大小写比较:)]进行键排序;
NSArray*sortedObjs=[temp-objectsForKeys:sortedKeys-notFoundMarker:[NSNull];
[临时释放];//如果不使用ARC
它将输出:

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

正如Alexander回答的,您没有传递字符串数组。

这是字符串数组。请将输入和输出粘贴到此处,您可以说,“…sortedArray=[leftArray…”。显然,此代码不会对
rightArray
@philip抱歉,它实际上是rightArray。Alexander正在工作。您能帮我回答第二个问题吗?
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
)