Oc中的數組,Oc數組

來源:互聯網
上載者:User

Oc中的數組,Oc數組

==========================

數組

==========================

一.認識數組

oc中可以把NSObject對象的子類放到數組這個集合中,但是int、float、double等基礎資料類型需要先進行轉換才可以存入數組。

oc中數組以NS開頭,其中分為可變數組和不可變數組;

1.不可變數組(NSArray)

數組在建立的時候被初始化之後,不可以再次進行增、刪、改;

        //NSArray 是一個類,蘋果公司封裝好的數組類。

        //數組需要先分配記憶體再使用,

        //initWithObjects 逐個單詞翻譯:init -- 初始化 with ---對... objects --- 多個對象

        //initWithObjects 用多個對象對 [NSArray alloc] 分配的記憶體空間進行初始化

        NSString* str = [NSString stringWithFormat:@"%d",123];

        NSArray* arr = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil];

        //【注】以小括弧包圍,每個資料都是以逗號隔開的資料格式是數組資料

        dog* mydog = [[dog alloc]init];

        mydog.value = 100;

        cat* mycat = [[cat alloc]init];

         //oc中的數組可以儲存不一樣類型的資料

        //定義objectArr這個對象並給它分配記憶體並初始化值,最後一個nil結尾一定不要省略

        //數組初始化之後,不能對其進行增刪改的數組,是不可變數組,不可變數組的資料只有第一次初始化的時候給賦值,之後不允許進行增刪改;可以理解為是一種唯讀做用;

        NSArray* objectArr = [[NSArray alloc]initWithObjects:mydog,mycat,@"yudejun", nil];

        NSLog(@"%@\n%@",arr,objectArr);

         //取元素

        //【注】嚴禁數組越界

        //隱式轉換

        //

        dog* tmp = [objectArr objectAtIndex:0];

        NSLog(@"%d",tmp.value);

        

        //取數組元素個數

        NSLog(@"%ld",[objectArr count]);

        

        //遍曆數組

        for (int i=0; i<[arr count]; i++) {

            

            NSLog(@"%@",[arr objectAtIndex:i]);

        }

        //oc中遍曆數組有一個更簡單的方法

        //這個文法就是for(in)文法,for迴圈先去判斷NSString* str 是否在arr中,如果在,則繼續迴圈

        //數組會遍曆arr的元素個數次

        for (NSString* str in arr) {

            NSLog(@"%@",str);

        }

        

        //優缺點比對

        //第一種寫法方便遍曆指定元素,但寫起來繁瑣。

        //第二種寫法簡潔,並且不會出現數組越界導致程式崩潰的問題

        //這2種方式互補,某一些情況下必須用第一種方式才能解決。

        

        

        //從Xcode4.6開始,蘋果提供如下寫法

        //建立了一個不可變數組並初始化了值。

        

        NSArray* TempArr = @[@"yu",@"de",@"jun"];

       //如上方法等價: NSArray* TempArr = [[NSArray alloc]initWithObjects:@"yu",@"de",@"jun", nil];

        NSLog(@"%@",TempArr);

        

        //[arr objectAtIndex:0]

        NSLog(@"%@",arr[1]);

 

        //NSMutableArray 為可變數組,可以進行增刪改

        NSMutableArray* m_arr = [[NSMutableArray alloc]init];

        

        //添加元素

        [m_arr addObject:@"1"];

        [m_arr addObject:mydog];

        [m_arr addObject:@"3"];

        

        //刪除下標索引值是0的元素

        [m_arr removeObjectAtIndex:0];

        

        //交換數組元素

        [m_arr exchangeObjectAtIndex:0 withObjectAtIndex:1];

        

        //清空數組  刪除數組中所有元素

        [m_arr removeAllObjects];

        

        //刪除數組元素中最後一個元素

        [m_arr removeLastObject];

        

        //插入一個元素,在索引值是0的位置,原來元素位置後移

        [m_arr insertObject:@"haha" atIndex:0];

        

        //替換元素 用999這個對象值來替換掉第0個元素的值

        [m_arr replaceObjectAtIndex:0 withObject:@"999"];

        

        //判斷是否包含某一個對象

        BOOL isContain = [m_arr containsObject:@"999"];

        if (isContain) {

            NSLog(@"包含");

        }

        else

        {

            NSLog(@"不包含");

        }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.