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: 怎么样?
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: 怎么样?