如何对mutablensarray进行排序?

时间:2011-09-17 07:16:56

标签: xcode sorting nsmutablearray

我制作了这个代码来对nsmutablearray进行排序但是如何发送回NSMutablearray?我需要这个,因为稍后在我的mutablearray中添加信息。

- (NSArray *)trierTableau:(NSMutableArray *)ptableau champsFiltre:(NSString *)champs {

NSSortDescriptor *lastDescriptor =
[[[NSSortDescriptor alloc]
  initWithKey:champs
  ascending:YES
  selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];

NSArray * descriptors = [NSArray arrayWithObjects:lastDescriptor, nil];
NSArray * sortedArray = [ptableau sortedArrayUsingDescriptors:descriptors];

return sortedArray;

}

1 个答案:

答案 0 :(得分:0)

如果您想对就地NSMutableArray进行排序,则可以调用sortUsingDescriptors:而不是sortedArrayUsingDescriptors:,后者会返回数组的已排序副本。 sortUsingDescriptors:会对现有的NSMutableArray进行排序。

e.g。

-(void)trierTableau:(NSMutableArray*)ptableau champsFiltre:(NSString*) champs {
    NSSortDescriptor *lastDescriptor =
    [[[NSSortDescriptor alloc]
      initWithKey:champs
      ascending:YES
      selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];

    NSArray * descriptors = [NSArray arrayWithObjects:lastDescriptor, nil];
    [ptableau sortUsingDescriptors:descriptors];
}

这样您就不必返回NSMutableArray

如果您确实需要数组的已排序副本,则需要创建新的NSMutableArray,使用addObjectsFromArray:复制元素,然后使用sortUsingDescriptors:新阵列。但我认为排序现有的NSMutableArray可能就是你想要的。