OC第六节 遍历集合、数组排序
1、遍歷的?式?for、枚舉器、forin。
? ①.for循環(huán)同C語言,循環(huán)條件是集合的元素個(gè)數(shù)或鍵值對(duì)個(gè)數(shù),無序的集合要先轉(zhuǎn)換成數(shù)組在根據(jù)下標(biāo)遍歷
? ②.枚舉器 NSEnumerator?
objectEnumerator (reverseObjectEnumerator) ? 創(chuàng)建枚舉器(反向枚舉器)
nextObject? 與while循環(huán)連用,遍歷集合
? ③. for … in :快速枚舉,是在NSEnumerator的基礎(chǔ)上封裝的更加方便的快熟便立即和元素的方式,格式如下:
? ? for (<#type *object#> in <#collection#>) {
? ? ? ? ?<#statements#>
? ? }
?? ? type *object: type *? 代表從集合中獲取到的對(duì)象類型
?? ? object 只是一個(gè)名稱,只需要滿足變量名命名法則即可
?? ? collection 代表遍歷的集合
?? ? statements 遍歷中需要執(zhí)行的操作
?? ? for in 遍歷注意事項(xiàng):
for in 遍歷可以使用嵌套,一般在字典中可以用到,先遍歷key值,在value值里如果是集合,可以遍歷集合元素
for in 遍歷相當(dāng)與枚舉器,所以在遍歷時(shí)不能修改值,只能先用其他東西提取出來然后再賦值回去
?
2、三者的區(qū)別?
①. for?于知道容器中的對(duì)象個(gè)數(shù)
②. 枚舉器,通常與while循環(huán)連?,nextObject只要能獲取到對(duì)象,就繼續(xù)執(zhí)?枚舉,直到空為?
③. forin內(nèi)部封裝了枚舉器,forin和枚舉器在遍歷時(shí)不允許改變集合的容量。
?
3、使用NSSortDescriptor進(jìn)行數(shù)組排序三步走
? ? ? ? 1、創(chuàng)建一個(gè)用來排序的數(shù)組
? ? ? ? 2、創(chuàng)建一個(gè)排序條件,也就是一個(gè)NSSortDescriptor對(duì)象,初始化中需要指定按照數(shù)組中對(duì)象中什么屬性值排序,升序或者降序
? ? //?第一個(gè)參數(shù)為數(shù)組中對(duì)象要按照什么屬性來排序(比如自身,姓名,年齡)
? ? //?第二個(gè)參數(shù)為指定排序方式是 升序還是 降序
? ? ? ? 3、數(shù)組根據(jù)排序條件進(jìn)行排序,得到一個(gè)排序之后的數(shù)組(如果是可變數(shù)組,不會(huì)生成新數(shù)組,還是本身)
?
4、創(chuàng)建?個(gè)NSSortDescriptor對(duì)象的方法(initWithKey方法)
? ? ①.?sortedArrayUsingDescriptor:@[NSSortDescriptor對(duì)象,即排序方式]
? ? ②.?sortedArrayUsingDescriptors? 后面可以接多個(gè)NSSortDescriptor對(duì)象,對(duì)象之間哪個(gè)在前那個(gè)的優(yōu)先級(jí)更高。
? ? ③.?sortedArrayUsingSelector:SEL(@selector(?法名))? 必須先要一個(gè)排序方法才能用
? 注:?// SEL類型的參數(shù) 只能用 @selector(方法名) 給定。
?//?如果數(shù)組使用這個(gè)方法進(jìn)行排序,此方法必須是返回值為NSComparisionResult。
? ? ?//?數(shù)組排序 需要傳入的方法參數(shù) 要的是方法的返回值,根據(jù)方法的返回值決定到底是按照升序排列還是降序排列。
?
5、猜測(cè)在默認(rèn)排序方法(compare: )的實(shí)現(xiàn)
? ??/* ?冒泡排序內(nèi)部
? ? ? ? ?if (表達(dá)式 > 0) {
? ? ? ? ? ? ?交換;
? ? ? ? ?} ?*/
? ? //方法的返回值為1,說明前面的大于后面的,降序,那么表達(dá)式的值為1,進(jìn)行交換后前面的就小于后面的了,所以就成了升序,compare: 方法就是默認(rèn)升序的。
? ? //方法的返回值為2,說明前面的小于后面的,升序,那么表達(dá)式的值為-1,不會(huì)進(jìn)行交換,那么還是升序。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/hyl2012/p/5213043.html
總結(jié)
以上是生活随笔為你收集整理的OC第六节 遍历集合、数组排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#菜鸟正则表达式一
- 下一篇: 值传递和引用传递的讲解