2012-06-30 90 views
0

我想在iPhone应用程序中通过Aa-Zz格式对NSMutablArray值进行排序。我在我的项目中使用了下面的代码。如何在iPhone中对NSMutableArray的值Aa-Zz进行排序?

for (id key in [dictionary allKeys]) 
     { 
      id value = [dictionary valueForKey:key]; 
      [duplicateArray addObject:value]; 
      [value release]; 
      value =nil; 
      NSSortDescriptor *sortdis = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES] autorelease]; 
      NSArray *discriptor = [NSArray arrayWithObjects:sortdis,nil]; 
      mutableArray = [[duplicateArray sortedArrayUsingDescriptors:discriptor]retain]; 
     } 
     NSLog(@"mutableArray : %@", mutableArray); 
[mutableArray sortUsingSelector:@selector(caseInsensitiveCompare:)]; 

的应用越来越坠毁与此错误日志:[__NSArrayI sortUsingSelector:]: unrecognized selector sent to instance.

但是,我已经搜查,发现了坠毁的原因。我mutableArray值都是这样的,

(
     { 
     Id = 00001; 
     Name = "ABCD"; 
    }, 
     { 
     Id = 00002; 
     Name = "BCDE"; 
    }, 
     { 
     Id = 00003; 
     Name = "ZXYS"; 
    }, 
     { 
     Id = 00004; 
     Name = "abcd"; 
    }, 
     { 
     Id = 00009; 
     Name = "bcde"; 
    }, 
) 

我想有点像ABCD,ABCD,BCDE,BCDE,ZXYs这个数组valuse。 任何人都可以请帮忙解决这个问题。

回答

1

Gopinath。请在您的项目中使用此更新的代码。

for (id key in [dictionary allKeys]) 
    { 
     id value = [dictionary valueForKey:key]; 
     [duplicateArray addObject:value]; 
     [value release]; 
     value =nil; 
     NSSortDescriptor *sortdis = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]autorelease]; 
     NSArray *discriptor = [NSArray arrayWithObjects:sortdis,nil]; 
     mutableArray = [[duplicateArray sortedArrayUsingDescriptors:discriptor]retain]; 
    } 
    NSLog(@"mutableArray : %@", mutableArray); 

我希望它能帮到你。谢谢。

+0

感谢。这对我有帮助。 – Gopinath

+0

这有帮助,但它不是很好的代码。在添加完所有内容后,您只应该对数组进行一次排序!移动在循环外排序的所有代码。而且价值不需要被释放 - 你没有创造它。所以失去了发行版。 –

0
for (id key in [dictionary allKeys]) 
    { 
     id value = [dictionary valueForKey:key]; 
     [duplicateArray addObject:value]; 
    } 
    NSSortDescriptor *sortdis = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]autorelease]; 
    NSArray *discriptor = [NSArray arrayWithObjects:sortdis,nil]; 
    NSArray* notAMutableArray = [[duplicateArray sortedArrayUsingDescriptors:discriptor]retain]; 
    NSLog(@"notAMutableArray : %@", notAMutableArray); 

我没有跑这一点,但它是一个更好的开始...

相关问题