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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

1、遍歷的?式?for、枚舉器、forin。

?   ①.for循環同C語言,循環條件是集合的元素個數或鍵值對個數,無序的集合要先轉換成數組在根據下標遍歷

?   ②.枚舉器 NSEnumerator?

    objectEnumerator (reverseObjectEnumerator) ? 創建枚舉器(反向枚舉器)

    nextObject? 與while循環連用,遍歷集合

?   ③. for … in :快速枚舉,是在NSEnumerator的基礎上封裝的更加方便的快熟便立即和元素的方式,格式如下:

? ?   for (<#type *object#> in <#collection#>) {

? ? ? ?  ?<#statements#>

? ?   }

?? ?   type *object: type *? 代表從集合中獲取到的對象類型

?? ?   object 只是一個名稱,只需要滿足變量名命名法則即可

?? ?   collection 代表遍歷的集合

?? ?   statements 遍歷中需要執行的操作

?? ? for in 遍歷注意事項:

    for in 遍歷可以使用嵌套,一般在字典中可以用到,先遍歷key值,在value值里如果是集合,可以遍歷集合元素

    for in 遍歷相當與枚舉器,所以在遍歷時不能修改值,只能先用其他東西提取出來然后再賦值回去

?

2、三者的區別?

  ①. for?于知道容器中的對象個數

  ②. 枚舉器,通常與while循環連?,nextObject只要能獲取到對象,就繼續執?枚舉,直到空為?

  ③. forin內部封裝了枚舉器,forin和枚舉器在遍歷時不允許改變集合的容量。

?

3、使用NSSortDescriptor進行數組排序三步走

? ? ? ? 1、創建一個用來排序的數組

? ? ? ? 2、創建一個排序條件,也就是一個NSSortDescriptor對象,初始化中需要指定按照數組中對象中什么屬性值排序,升序或者降序

? ?    //?第一個參數為數組中對象要按照什么屬性來排序(比如自身,姓名,年齡)

? ?    //?第二個參數為指定排序方式是 升序還是 降序

? ? ? ? 3、數組根據排序條件進行排序,得到一個排序之后的數組(如果是可變數組,不會生成新數組,還是本身)

?

4、創建?個NSSortDescriptor對象的方法(initWithKey方法)

? ?   ①.?sortedArrayUsingDescriptor:@[NSSortDescriptor對象,即排序方式]

? ?   ②.?sortedArrayUsingDescriptors? 后面可以接多個NSSortDescriptor對象,對象之間哪個在前那個的優先級更高。

? ?   ③.?sortedArrayUsingSelector:SEL(@selector(?法名))? 必須先要一個排序方法才能用

   ?  注:?// SEL類型的參數 只能用 @selector(方法名) 給定。

        ?//?如果數組使用這個方法進行排序,此方法必須是返回值為NSComparisionResult。

? ?       ?//?數組排序 需要傳入的方法參數 要的是方法的返回值,根據方法的返回值決定到底是按照升序排列還是降序排列。

?

5、猜測在默認排序方法(compare: )的實現

? ??/* ?冒泡排序內部

? ? ? ? ?if (表達式 > 0) {

? ? ? ? ? ? ?交換;

? ? ? ? ?} ?*/

? ? //方法的返回值為1,說明前面的大于后面的,降序,那么表達式的值為1,進行交換后前面的就小于后面的了,所以就成了升序,compare: 方法就是默認升序的。

? ? //方法的返回值為2,說明前面的小于后面的,升序,那么表達式的值為-1,不會進行交換,那么還是升序。

?

?

轉載于:https://www.cnblogs.com/hyl2012/p/5213043.html

總結

以上是生活随笔為你收集整理的OC第六节 遍历集合、数组排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。