OC中集合類對象的枚舉和數(shù)組的排序

集合類(數(shù)組,字典,集合)的枚舉

枚舉器: ENumerator :一個工具類,功能是一一列舉容器類中存儲的元素,枚舉器不需要自己去創(chuàng)建對象,直接獲取容器類對象創(chuàng)建的相應的枚舉器

比如:NSArray *array = @[ob1,ob2,ob3];? Enumerator *enum = [array objectEnumerator]? 即獲取了不可變數(shù)組array的枚舉器

然后與while循環(huán)聯(lián)合使用便可枚舉集合的所有元素: id object = nil;? while(object

= [enum nextObject]){? NSLog{@"object = %@"}, object };

將array中的元素一一打印出來

獲取數(shù)組的反向枚舉器? enum = [array reverseObjectEnumerator];

快速枚舉? for in? :本質是對枚舉器進行了封裝

格式:? for(元素對象的類型 元素對象 in 被枚舉集合)? { 操作... };

舉例: for (id object in array)? {? NSLog:(@"%@",object);? };?? 將array中的各個對象元素一一打印出來

字典容器獲取枚舉器的方法: NSDictionary *dict = @{ob1,ob2,ob3}; ? enum = [dict

keyEnumerator ;]? 即:是要獲得字典中所有key值的枚舉器,再通過對key值的枚舉從而可以對???????? 每個

key值對應的value進行枚舉 .

數(shù)組集合的排序

1.方法排序:(如使用冒泡排序)通過定義數(shù)組中對象的屬性比較方法:compareProperty()和數(shù)組的交換元素方法:exchangeObjectAtIndex:m withObjectAtIndex:n 來實現(xiàn)數(shù)組的排序

方法選擇器@selector的使用可以簡化代碼? 屬性值的比較方法定義格式:??? -(NSComparisonResult)compareProperty:(id)other {.....}

舉例: newArray = [array sortedArrayUsingSelector:@selector(compareProperty)];

2.排序描述類排序:

排序描述類對象的創(chuàng)建: NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:ob ascending:BOOL];

key表示排序主鍵,即對象的屬性名稱? ascending:YES 表示升序排序,反之NO表示降序

舉例:對array數(shù)組中的thisProperty屬性進行排序:

NSSortDescriptor *arrayDesc = [[NSSortDescriptor alloc] initWithKey:thisProperty ascending:YES];?? newArray = [array sortedArrayUsingDescriptors:@[arraytDesc]];

如果sortUsingDescriptors方法的參數(shù)中有多個排序描述對象時,首先按第一個描述排序,遇到相同屬性則按第二個進行排序,依次類推

如:[array sortedArrayUsingDescriptors@[arrayDesc1,arrayDesc2...];

排序描述類排序的好處:可以同時按多種方式排序,而且不用手動寫比較屬性方法的實現(xiàn)

3.block方法排序:? 舉例: array sortedArrayUsingComparator:^NSComparisonResult(id ob1, id ob2){......}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數(shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,300評論 6 13
  • A ------ >遍歷概念 1、集合 ( collection ) OC 中提供的容器 : 數(shù)組,字典,集合 2...
    b8028f13eaa2閱讀 737評論 0 0
  • 面向對象三大支柱封裝:就是把相關的數(shù)據(jù)和代碼結合成一個有機的整體,形成數(shù)據(jù)和操作代碼的封裝體,對外只提供一個可以控...
    WangDavid閱讀 1,960評論 0 2
  • 1. 很晚了,芥末給我發(fā)來一條微信: “他還是要跟我分手,這一次,可能是真的?!?以前芥末的分手就像“狼來了”,每...
    安喬Lily閱讀 3,015評論 40 81
  • “元認知能力,對自己的思考過程的認知與理解?!?許多時候自己并未認識到自己的思考,特別是自己將計劃的事情不斷往向拖...
    致遠007閱讀 451評論 0 1

友情鏈接更多精彩內容