日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC第六节 遍历集合、数组排序

發(fā)布時(shí)間:2024/4/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC第六节 遍历集合、数组排序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。