NSMutableArray sortedArrayUsingDescriptors:需要中间结果数组

NSMutableArray sortedArrayUsingDescriptors: requires intermediate results array

sortedarrayusingdescriptors 似乎没有像我希望的那样进行就地排序。 看起来它需要一个额外的数组来进行排序,然后您将清除原始可变数组并用排序后的数组的结果重新填充它。

例如,我希望它能工作...

@interface SomeClass
{
   NSMutableArray *mutableArrayOfItems;
}

-(void)sortItems
    {
        NSSortDescriptor *descriptor1 = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];
        NSSortDescriptor *descriptor2 = [[NSSortDescriptor alloc]initWithKey:@"age" ascending:NO];

        NSArray *descriptors = [NSArray arrayWithObjects:descriptor1,descriptor2, nil];
        mutableArrayOfItems = [mutableArrayOfItems sortedArrayUsingDescriptors:descriptors];
    }

但不得不这样做....

@interface SomeClass
{
   NSMutableArray *mutableArrayOfItems;
}

-(void)sortItems
    {
        NSSortDescriptor *descriptor1 = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];
        NSSortDescriptor *descriptor2 = [[NSSortDescriptor alloc]initWithKey:@"age" ascending:NO];

        NSArray *descriptors = [NSArray arrayWithObjects:descriptor1,descriptor2, nil];
        NSArray *sortedArray = [mutableArrayOfItems sortedArrayUsingDescriptors:descriptors];
        [mutableArrayOfItems removeAllObjects];
        [mutableArrayOfItems addObjectsFromArray:sortedArray];
    }

那是因为您使用了创建新数组的方法。不如调用 sortUsingDescriptors: 怎么样?