Object-C之NSArry,(補充NSmutableString)

來源:互聯網
上載者:User

標籤:nsarray   nsmutablearray   

**OC中的NSArray和NSmutableString

本文將介紹在oc中關於集合(NSArry,也可稱之為數組)和可變字串(NSmutableString)的一些內容:

  • 關於NSmutableString
  • 關於NSArray
  • NSArray的建立
  • NSArray添加資料
  • NSArray擷取某個資料
  • NSArray移除資料
  • NSArray資料遍曆
  • NSArray資料排序
  • 關於NSArray其他動作方法
關於NSmutableString
  • 其實NSmutableString和NSString都是表示一個字串,NSString字串初始化以後是不能改變的,而NSmutableString定義的字串可以更改。其方法和NSString基本操作差不多一樣。
    -如appendString表示追加字串;
    -substringFromIndex截取字串;
    -componentsSeparatedByString分割字串;
    -characterAtIndex根據下表取值;
    -stringByAppendingPathExtension追加一個拓展名;
    -stringByDeletingPathExtension刪除一個拓展名;
    -hasPrefixhasSuffix判斷前尾碼;
    等等一些方法…
關於NSArray
  • 關於OC中的NSArray可以理解成數組,也可以理解成是集合,用來裝一個類型資料的合集,在java中我們通常把數組和集合(List..)區分開來,其實OC中的NSArray和java中的list很像。有java基礎的開發人員應該很容易能夠懂。
NSArray的建立
  • arrayWithObjects方法
  • initWithContentsOfFile方法,從檔案中擷取資料

    注意:
    集合中如果資料是某一自訂對象,這些對象不用自己釋放,當數組銷毀時會一一釋放對象,由於初始化資料的時候arrayWithO ject是靜態方法所以它的釋放不用我們管理,系統幫我們管理。

    說明:
    initWithContentsOfFile方法是從某個檔案中擷取資料,放到數組中,這個的檔案資料並不是什麼資料都可以,要具有一定的格式-xml格式資料,如:

    ,所以一般檔案格式為.xml格式的檔案。
NSArray添加資料
  • arrayByAddingObject能夠添加一個資料到數組

    注意:
    使用這個方法添加資料得到的是 一個新的數組,不是在原來的基礎上添加進去的,因為NSArray初始化完成以後就不能改變了,也可以說NSArray不支援添加操作,這裡可以使用NSMutableArray(是NSArray的子類),這個和NSmutableString特性有點像,是可變的。
NSArray擷取某資料
  • objectAtIndex能夠添加一個資料到數組

    當然有根據下標擷取資料,那肯定就能根據資料擷取其下標:

    這個的stu是一個數組裡面一個對象。
NSArray移除資料
  • NSArray沒有移除資料的方法,因為NSArray初始化以後是不能改變的,個NSString一樣,可以使用NSMutableArray,該類中有個方法removeObjectAtIndex:index,移除下標為index的元素。
NSArray資料遍曆
  • 用普通的for迴圈遍曆,優點-事能夠擷取下標

    和java中的for一樣的,比較簡單。

  • 用普通的foreach迴圈遍曆,優點-效率相對比較高

    這裡的for結構為:for(id data in array){},
    id:表示一切對象;
    data:表示臨時變數,和java中的一樣;
    in:相當於java中的額 “:”,在哪裡迴圈;
    array:表示需要遍曆的數組;

  • 使用Block代碼塊來進行遍曆

    這方法apple是比較推薦的,效率比較高,容易控制。
    enumerateObjecyUsingBlock中有三個參數,
    id :當前的對象;
    NSUInteger:當前對象的下標;
    BOOL:表示是否停止遍曆,如需要停止著*stop=false即可。(參數中的 *stop表示是一個指標,而擷取指標的值就是 *stop,把指標值更改為false,停止遍曆)。

NSArray資料排序
  • sortedArrayUsingSelector:@selector(compare:)預設升序

    說明:@selector表示可以理解為一個篩選器,compare:是系統的方法,調用該方法排序會返回一個已經排好序的新數組。

  • sortedArrayUsingSelector:@selector(compareStudent:)自訂篩選方法,compareStudent:自己寫的篩選方法,該方法寫在Student對象中,因為array裡面裝的是Student對象資料。
    Student中:

    說明:在student.h中聲明,傳回值固定為NSComparisonResult

    -(compareStudent) compareStudent:(student *)stu
  在student.m中實現該方法
    -(NSComparisonResult)compareStudent:(student *)stu{        NSComparisonResult result=[self.name compare:stu.name];        //以下可以寫判斷方法。。。。        return result;    }
 在main中調用該方法:

  • 使用程式碼片段block,sortedArrayUsingComparator:^NSComparisonResult(id*obj1,id *obj2)

    其實最終原來還是根據student中的名字來排序的在代碼中可以看到。

  • 自訂篩選器,sortedArrayUsingDescriptors方法

    這裡的需求是先根據學生姓名來排序,然後在根據學生擁有的書名排序。
    首先我們定義一個根據學生姓名排序的篩選器:

    osrtDescriptorWith:表示根據哪個key來為排序標準
    ascending:是否升序,yes表示升序,no表示降序
    根據書名來建立排序器也一樣的。

關於NSArray其他動作方法
  • makeObjectsPerformSelector給數組中的每個對象發送一條訊息

    其中test方法是student中定義的方法。
    可以有參數,也可以沒有參數,但是如果有參數,最多隻能有一個參數傳遞。

  • writeToFile把數組中的資料寫出到檔案

    ffilepath:檔案路徑;
    atomically:是否遵守原子性。

  • containsObject是否包含了某個對象值

  • componentsJoinedByString把數組拼接成一個字串

    方法有一個參數@”-“:表示分割組合成的字串用“-”來分開。
    最終列印的結果為:
    ×××× - ×××× - ×××× - ××××;

Object-C之NSArry,(補充NSmutableString)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.