2013-02-17 88 views
2

我有一個NSArray,看起來像這樣:排序NSArray的大寫字母

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

從它,我想打一個NSArray,將有所有相同的數值,但應該是這樣的:

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

我想這樣做,因爲我想作出這樣的第二陣列中的搜索,我要替換每一個大寫字母它與正常信。

你如何在Objective-C中做這樣的事情?提前致謝!

回答

5

你可以通過一個數組,並通過調用

[element lowercaseString] 

每個元素爲小寫轉換。但是,對於執行不區分大小寫的搜索,這是非常不理想的:更好的方法是將字符串按原樣保存,並採用caseInsensitiveCompare方法進行搜索。

+0

第二種選擇要好得多!我會試試看,謝謝! – 2013-02-17 12:29:08

5

你爲什麼要複印?您可以在不區分大小寫的方式排序一個NSArray:

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

而且,記住,sortedArrayUsingSelector將返回到原來的項目,而不是它們的副本引用數組。

+0

謝謝,這是一個很好的方法來做到這一點! – 2013-02-17 12:29:43

+0

奇怪的是,我得到了一個與舊數組相同的NSString的NSArray。 – 2013-02-17 12:51:16

+0

@SergiusGee沒什麼奇怪的。排序不會更改值。這種方法規定,在確定排序順序時應忽略該情況。但沒有值實際上被改變。 – rmaddy 2013-02-17 16:11:31

相關問題