iOS - 數組(NSArray)

来源:http://www.cnblogs.com/share-iOS/archive/2016/08/29/5819909.html
-Advertisement-
Play Games

1. 數組的常用處理方式 // 不可變數組 //1.數組的創建 NSString *s1 = @"zhangsan"; NSString *s2 = @"lisi"; NSString *s3 = @"wangwu"; //(1) NSArray *array1 = [[NSArray alloc] ...


1. 數組的常用處理方式

 //--------------------不可變數組

        //1.數組的創建

        NSString *s1 = @"zhangsan";

        NSString *s2 = @"lisi";

        NSString *s3 = @"wangwu";

        //(1)

        NSArray *array1 = [[NSArray alloc] initWithObjects:s1,s2,s3, nil];

        NSLog(@"%@",array1); //等價於 array1.descripton

        

        //(2)使用類方法創建

        

        NSArray *array2 = [NSArray arrayWithObjects:s1,s2,s3, nil];

        //(3)創建一個數組對象,同時往裡面存入一元素

        NSArray *array3 = [NSArray arrayWithObject:s1];

        

        //(4)創建一個數組,此數組中的元素來自array1

        NSArray *array4 = [NSArray arrayWithArray:array1];

        NSLog(@"array4 = %@",array4);

        

        //2.通過下標取元素

        NSString *str1 = [array4 objectAtIndex:0];

        

        //3.數組元素的個數

        

        NSUInteger count = [array4 count];  //等價於:array4.count;

        

        //4.判斷數組中的是否包含某個元素

        BOOL isContains = [array4 containsObject:@"zhangsan"];

        NSLog(@"isContains:%d",isContains);

        

        //5.查找某一個對象在數組中的下標位置

        NSUInteger index = [array4 indexOfObject:@"wangwu"];

        if (index == NSNotFound) {

            NSLog(@"Not find elemnts");

        } else {

            NSLog(@"index = %ld",index);

        }

        

        //6.鏈接數組中的字元串(前提:數組中都是字元串)

        NSString *joinString = [array4 componentsJoinedByString:@","];

        NSLog(@"joinString = %@",joinString);

        

        //7.訪問數組最後一個元素

        NSString *lastObj = [array4 lastObject];  //array4.lastObject

        NSLog(@"lsatObj = %@",lastObj);

        

        //8.再原路的數組後面添加一個元素

        

        NSArray *array5 = [array4 arrayByAddingObject:@"zhaolia"];

        NSLog(@"array5 = %@",array5);

        

        //取對應下標元素

        int idx=4;

        if (idx <array5.count) {

            NSString *s = [array5 objectAtIndex:idx];

            NSLog(@"s = %@",s);

        }

        

        //--------------數組的遍歷

        //1.普通遍歷

        for (int i=0; i<array5.count; i++) {

            NSString *str = [array5 objectAtIndex:i];

            NSLog(@"%@",str);

        }

        

        //快速遍歷

        for (NSString *s in array5) {

            NSLog(@"%@",s);

        }

        

        //4.4之後的優化

        //1.創建一個素組

        NSArray *array7 = @[s1,s2,s3]; //等價於:NSArray *array7 = [NSArray arrayWithObjects:s1,s2,s3,nil];

        NSLog(@"array7 = %@",array7);

        

        NSString *str = array7[0];

        NSLog(@"array[7] = %@",str);

        

    

        //------------------可變數組

        //初始化,設定元素個數為5,可以更改的。(繼承自NSArray)

        NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:5];

        

        //想數組中添加一個元素

        [mutableArray addObject:@"aaa"];

        //向數組中指定下標插入元素

        [mutableArray insertObject:@"ccc" atIndex:0];

        NSLog(@"%@",mutableArray);   //原來位置元素後移

        

        //移除最後一個元素

        [mutableArray removeLastObject];

        NSLog(@"移除最後元素後:%@",mutableArray);

        

        //移除指定元素

        [mutableArray removeObject:@"aaa"];

        

        //移除指定下標元素

        [mutableArray removeObjectAtIndex:0];

        

        //向數組中添加數組

        [mutableArray addObjectsFromArray:array1];

        

        //1.創建可變數組

        NSString *t1 = @"zhangsan ";

        NSString *t2 = @"lisi";

        NSString *t3 = @"wangwu ";

        

//        NSMutableArray *mArray1 = @[s1,s2,s3];//wrong.這裡創建了一個不可變數組

        NSMutableArray *mArray1 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3, nil];

        

        //創建數組時,開闢3個空間用於存儲元素,存儲超過容量,數組自動增大空間

        NSMutableArray *mArray2 = [[NSMutableArray alloc] initWithCapacity:3];

        

        NSMutableArray *mArray3 = [NSMutableArray arrayWithCapacity:3];

        

        //2.添加元素

        [mArray2 addObject:t1];

        [mArray2 addObject:t2];

        [mArray2 addObject:t3];

        NSLog(@"mArray2= %@",mArray2);

        

        //將mArray2 中元素添加到mArray3中

//        [mArray3 addObjectsFromArray:mArray2];

        

        //將mArray2作為二維數字添加

        [mArray3 addObject:mArray2];

        NSLog(@"mArray3 = %@",mArray3);

        

        //3.插入元素

        [mArray2 insertObject:@"Jack" atIndex:0];

        NSLog(@"mArray2 = %@",mArray2);

        

        //4.替換元素

        [mArray2 replaceObjectAtIndex:0 withObject:@"John"];

        NSLog(@"替換:%@",mArray2);

        

        //5.互換兩個元素的位置

        [mArray2 exchangeObjectAtIndex:3 withObjectAtIndex:0];

        NSLog(@"mArray2 = %@",mArray2);

        

        //6.刪除元素

        //6.1根據下標刪除

        [mArray2 removeObjectAtIndex:2];

        NSLog(@"mArray2 = %@",mArray2);

        

        //6.2刪除最後一個元素

        [mArray2 removeLastObject];

        NSLog(@"mArray2 = %@",mArray2);

        

        //6.3刪除指定的對象

        //[mArray2 removeObject:@"zhangsan"];

        

        //6.4刪除所有元素

        [mArray2 removeAllObjects];

        NSLog(@"mArray2 = %@",mArray2);

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原型陷阱: 在處理原型問題上時,我們要註意兩種行為。 1. 當我們對原型對象執行完全替換的時候,有可能會觸發原型鏈的某種異常。 2. prototype.constructor 屬性是不可靠的。 下麵,我們新建一個構造函數,並創建兩個對象: 即使在對象she1和she2對象被創建之後,我們仍然可以對 ...
  • 面向對象 一、編程範式: 1.命令式編程,2.聲明式 命令式編程的思想:面向過程,面向對象。聲明式的思想:DSL(領域特定語言) 命令式編程的定義:告訴電腦以什麼指令來執行代碼。註重中間過程。 聲明式的定義:告訴電腦想要什麼結果就讓電腦自己去執行。不需要關心過程。 面向過程:一步一步的向下執行 ...
  • 一,文本格式化:此例演示如何在一個 HTML 文件中對文本進行格式化。 效果如下: 二,預格式文本:此例演示如何使用 pre 標簽對空行和空格進行控制。 效果如下: 三,“電腦輸出”標簽:此例演示不同的“電腦輸出”標簽的顯示效果。 效果如下: 四,地址:此例演示如何在 HTML 文件中寫地址。 ...
  • 簡單記錄下網站首頁的搭建過程。 背景 自從網站功能變數名稱備案成功下來,一直以來都沒想好首頁應該怎麼寫。其實不是沒想好,而是沒有準備好首頁的多張大背景圖片應該存放在那,畢竟是最廉價的雲伺服器,應該本著勤儉持家的理念,能省就省嘛。不過還好, "bing中文搜索" 官網的背景圖片每天都會更新,於是萌生出了用no ...
  • [1]特征 [2]子節點 [3]特性操作 [4]attributes屬性 ...
  • --> 簡單的 頁面跳轉 和 點擊事件 的實現... --> AndroidManifest.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/ ...
  • 準備工作: new -> file -> other -> Empty ,在 Save As: 中隨便起個名字尾碼為 .xml 拷貝下麵 完整代碼 ...
  • 在某種場景下,可能我們需要獲取app的圖標名稱和啟動圖片的名稱。比如說app在前臺時,收到了遠程通知但是通知欄是不會有通知提醒的,這時我想做個模擬通知提示,需要用到icon名稱;再比如在載入某個控制器時,想設置該控制器的背景圖片為啟動圖片,需要用到啟動圖片名稱。 而事實上icon圖片放在系統AppI ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...