總結 NSArray的遍歷與排序

2021-06-29 00:27:16 字數 1577 閱讀 2124

排序方法總結

普通遍歷與c中的陣列便利方式一樣,使用for語句對陣列元素逐一取出。

nsarray *array = [nsarray arraywithobjects:@"12",@"21",@"2121",nil];

nsuinteger count = [array count];

for(int i = 0;i < count;i++)

for (id obj in array)

快速遍歷和.語法一樣,是利用了編譯器特性而進行的書寫簡化

[array enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) ];

相較於前兩個方法,block遍歷顯然更「物件導向」。

nsarray *array = [nsarray arraywithobjects:@"1",@"2",@"3",nil];

//把陣列裝入乙個迭代器中

nsenumerator *enumerator = [array objectenumerator];

//逐一遍歷

id obj = nil;

while (obj = [enumerator nextobject])

如果用數糖豆來模擬:

第一種方法是手動數糖豆,從盒子中將糖豆一顆一顆拿出來,數一數

第二種方法是僱了乙個工人,讓它幫你手動數糖豆

第三種方法,是讓糖豆自己數自己,然後把結果告訴你

第四種方法,是把糖豆全部倒入乙個「數糖豆機」,然後,讓機器給你數

有乙個排序規則制定委員會:nssortdescriptor

可以委託這個委員會派乙個「排序仲裁員」來幫我們的陣列排序

nssortdescriptor *someone = [nssortdescripior sortdescriptorwithkey:@」按哪個例項變數來排序」 ascending:yes //公升序排序

排序以後生成乙個新的陣列

nsarray *newarray = [array sortedarrayusingdescriptors:someone]

讓陣列排序,通過排序仲裁員「someone」

通過這個例子,我們更加可以看出:

1. 想讓物件或類返回乙個相同型別的物件,要用「讓誰幹什麼」這種句式

2. 想讓物件或類返回乙個不同型別的物件,要用「要誰的什麼」這種句式

如:

nsarray *newarray = [array sortedarrayusingdescriptors:someone]

返回乙個相同型別的物件,用「讓array排序(用someone仲裁員)」句式

nsenumerator *enumerator = [array objectenumerator];

要array的裝滿物件的迭代器

NSArray中的資料進行排序

nsarray中的資料排序,經常是利用nssortdescriptor。組裝資料 array nsmutablearray alloc initwithcapacity 11 nsmutabledictionary dir6 nsmutabledictionary alloc initwithcap...

iOS NSSet與NSArray的區別

明天請假回家了,這個月定的部落格目標還沒達成,趕緊來補充上。這篇文章半個月前就想寫了,因為那天突然被人問道nsset,腦子一過電,發現寶寶跟本沒有用過好不啦,但是最近工作比較忙準備好的材料也沒有整理,下面我們趕緊看下nsset和nsarray的區別吧!首先,nsset和nsarray功能性質一樣,用...

NSArray排序的一些方法

大體上,oc中常用的陣列排序有以下幾種方法 sortedarrayusingselector sortedarrayusingcomparator sortedarrayusingdescriptors 1 簡單排序 sortedarrayusingselector 如果只是對字串的排序,可以利用s...