对NSMutuableArray进行排序

时间:2011-06-09 14:11:19

标签: xcode sorting nsmutablearray

我有一个NSMutableArray,它加载了来自字典的信息......

[self.data removeAllObjects];  
NSMutableDictionary *rows = [[NSMutableDictionary alloc] initWithDictionary:[acacheDB.myDataset getRowsForTable:@"sites"]];      
self.data = [[NSMutableArray alloc] initWithArray:[rows allValues]];      

行字典中有两个键值对。

我需要按字母顺序对self.data NSMutableArray进行排序。

这是如何完成的?

感谢
托尼

2 个答案:

答案 0 :(得分:4)

如果值是纯字符串,则可以使用以下命令创建排序数组:

NSArray *sorted = [values sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

答案 1 :(得分:0)

这应该做:

[self.data removeAllObjects];
NSArray *values = [[acacheDB.myDataset getRowsForTable:@"sites"] allValues];
NSSortDescriptor *alphaDescriptor = [[NSSortDescriptor alloc] initWithKey:@"DCFProgramName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sortedValues = [values sortedArrayUsingDescriptors:[NSMutableArray arrayWithObjects:alphaDescriptor, nil]];
[alphaDesc release];
[self.data addObjectsFromArray:sortedValues];
  1. 如果您不久之后更换它,则无需清除NSMutableArray
  2. 如果您没有修改其中的任何内容,则无需再创建其他NSMutableDictionary
  3. 如果您还可以将值添加到现有值,则无需再创建其他NSMutableArray
  4. 此外:代码中存在严重的内存泄漏(2x alloc + 0x release = 2x leak)

    修改:更新的代码段,以反映OP对数据结构的更新。