用大写字母对NSArray进行排序

时间:2013-02-17 12:17:19

标签: iphone ios objective-c cocoa-touch nsarray

我有NSArray看起来像这样:

contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil];

从中,我想制作一个{em}所有相同值的NSArray ,但是看起来像这样:

newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"james joyce", @"shakespeare", nil];

我想这样做,因为我想在第二个数组中进行搜索,我想用普通字母替换中的每个大写字母

你如何在Objective-C中做这样的事情?提前谢谢!

2 个答案:

答案 0 :(得分:5)

您可以浏览数组,并通过调用

将每个元素转换为小写
[element lowercaseString]

就可以了。但是,这对于实现不区分大小写的搜索来说非常不理想:更好的方法是保持字符串不变,并使用caseInsensitiveCompare方法代替搜索。

答案 1 :(得分:5)

你为什么要复制?您可以以不区分大小写的方式对NSArray进行排序:

NSArray *sortedContactNamesArray = [contactNamesArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

另外,请记住sortedArrayUsingSelector返回一个数组,其中包含对原始项目的引用,而不是它们的副本。