Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 用大写字母对数组排序_Iphone_Ios_Objective C_Cocoa Touch_Nsarray - Fatal编程技术网

Iphone 用大写字母对数组排序

Iphone 用大写字母对数组排序,iphone,ios,objective-c,cocoa-touch,nsarray,Iphone,Ios,Objective C,Cocoa Touch,Nsarray,我有一个NSArray,看起来像这样: contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil]; newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"ja

我有一个
NSArray
,看起来像这样:

contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil];
newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"james joyce", @"shakespeare", nil];
从中,我想制作一个具有所有相同值的
NSArray
,但看起来像这样:

contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil];
newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"james joyce", @"shakespeare", nil];
我想这样做是因为我想在第二个数组中进行搜索,我想用一个普通字母替换其中的每个大写字母


在Objective-C中,您是如何做到这一点的?提前谢谢

您可以遍历数组,通过调用

[element lowercaseString]

在上面。然而,这对于实现不区分大小写的搜索来说是非常不理想的:更好的方法是保持字符串不变,并使用
caseInsensitiveCompare
方法进行搜索。

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

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

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

第二个选项更好!我试试看,谢谢!谢谢,这是一个很好的方法!奇怪的是,我得到的NSArray与旧数组中的NSString相同。@SergiusGee对此一点也不奇怪。排序不会更改值。这种方法指出,在确定排序顺序时,应忽略大小写。但实际上并没有改变任何值。