OC筆記,陣列NSArray

2021-07-03 01:16:34 字數 4487 閱讀 1899

建立陣列。

3種常用方法遍歷陣列。

可變陣列nsmutablearray。

所有的筆記記錄在**的注釋中,幾乎一句一注釋,通俗易懂。

**部分如下:

#import #import "dog.h"

int main(int argc, const char * argv)

// 快速列舉法

for (id obj2 in array)

// 使用i值遍歷

// 陣列中有兩個方法

// [array count]方法返回陣列元素的個數

// [array objectatindex:]方法返回單個元素的位址

nsinteger i;

for (i = 0; i < [array count]; i++)

// 以上的陣列均是不可變陣列,在建立之後元素的個數和順序不可變

// 可變陣列 mutablearray

nsmutablearray * marray = [[nsmutablearray alloc] init];

// 增加元素

[marray addobject:@"mone"];

[marray addobject:@"mtwo"];

[marray addobject:@"mthree"];

nslog(@"mutablearray marray: %@", marray);

// 刪除元素

// [marray removeobject:@"mone"];

// nslog(@"removeobject marray: %@", marray);

// 用@」「建立的字串物件,如果完全一樣,那麼就是同乙個物件,位址一樣。

// 刪除指定的第幾個字串

// [marray removeobjectatindex:1];

// nslog(@"remove at index marray: %@", marray);

// 交換兩個陣列元素的位置

[marray exchangeobjectatindex:0 withobjectatindex:2];

nslog(@"exchange marray: %@", marray);

// 可變字串陣列也可以像不可變陣列那樣遍歷

// 但是在列舉遍歷中不能刪除陣列中的元素

// nsmutablearray * mmarray = [[nsmutablearray alloc] initwithobjects:@"one", @"two", @"three", nil];

// nsenumerator * enu = [mmarray objectenumerator];

// nsstring * mstr;

// while (mstr = [enu nextobject])

// nslog(@"enumerator mmarray: %@", mmarray);

// 程式發生奔潰

// 實際上只有第一次迴圈可以執行

// 當對第一次陣列進行修改之後

// 第二次使用列舉法遍歷就會奔潰

// 但是,如果我們進行逆序遍歷,生成乙個逆序列舉器,再修改就沒有任何問題。

nsmutablearray * mmarray = [[nsmutablearray alloc] initwithobjects:@"one", @"two", @"three", nil];

nsenumerator * enu = [mmarray reverseobjectenumerator];

nsstring * mstr;

while (mstr = [enu nextobject])

nslog(@"%@", mmarray);

// 快速列舉法不能修改,i值可以隨意修改

// 陣列和字串的聯合使用

nsstring * sstr = @"i am a so bad man";

// 按每個單詞分開逆序表示

// 首先將字串進行分割,分割出的字串放在陣列中

// 函式按引數分割字串,建立乙個陣列,返回陣列的位址

nsarray * sarray = [sstr componentsseparatedbystring:@" "];

nslog(@"sarray: %@", sarray);

// 建立乙個空的可變陣列

nsmutablearray * mutalearray = [[nsmutablearray alloc] init];

// 對陣列sarray逆序的遍歷

nsenumerator * enumerator1 = [sarray reverseobjectenumerator];

nsstring * obj1;

while (obj1 = [enumerator1 nextobject])

nslog(@"mutablearray: %@", mutalearray);

// 再拼回成字串

// 用引數連線陣列中的每個字串

nsstring * newstr = [mutalearray componentsjoinedbystring:@" "];

nslog(@"%@", newstr);

}return 0;

}

列印結果如下:

2015-06-02 14:45:56.268 nsarray[16559:4906236] (

one,

two,

three

)2015-06-02 14:45:56.269 nsarray[16559:4906236] this is a dog!

2015-06-02 14:45:56.269 nsarray[16559:4906236] array2: (

one,

two,

"this is a dog!"

)2015-06-02 14:45:56.274 nsarray[16559:4906236] enumerator array: one

2015-06-02 14:45:56.274 nsarray[16559:4906236] enumerator array: two

2015-06-02 14:45:56.274 nsarray[16559:4906236] enumerator array: three

2015-06-02 14:45:56.275 nsarray[16559:4906236] fast enumerator array: one

2015-06-02 14:45:56.275 nsarray[16559:4906236] fast enumerator array: two

2015-06-02 14:45:56.275 nsarray[16559:4906236] fast enumerator array: three

2015-06-02 14:45:56.275 nsarray[16559:4906236] i with array loop: one

2015-06-02 14:45:56.275 nsarray[16559:4906236] i with array loop: two

2015-06-02 14:45:56.275 nsarray[16559:4906236] i with array loop: three

2015-06-02 14:45:56.276 nsarray[16559:4906236] mutablearray marray: (

mone,

mtwo,

mthree

)2015-06-02 14:45:56.276 nsarray[16559:4906236] exchange marray: (

mthree,

mtwo,

mone

)2015-06-02 14:45:56.276 nsarray[16559:4906236] three

2015-06-02 14:45:56.276 nsarray[16559:4906236] two

2015-06-02 14:45:56.276 nsarray[16559:4906236] one

2015-06-02 14:45:56.276 nsarray[16559:4906236] (

)2015-06-02 14:45:56.276 nsarray[16559:4906236] sarray: (

i,am,

a,so,

bad,

man)2015-06-02 14:45:56.277 nsarray[16559:4906236] mutablearray: (

man,

bad,

so,a,

am,i

)2015-06-02 14:45:56.277 nsarray[16559:4906236] man bad so a am i

OC不可變陣列NSArray詳解

1 nssarray 子類nsmutablearray nsset 子類nsmutableset nsdictionary 子類nsmutabledictionary 這幾個類都是集合類。2 c語言型別的陣列只能存放一種型別的資料。為此引入oc陣列nsarray,以物件導向的方法運算元據,可以存放各...

Swift筆記 陣列

建立乙個空陣列 使用構造語法來建立乙個由特定資料型別構成的空陣列 var array int print array.count count 通過建構函式的型別,array的值型別被推斷為 int 建立乙個帶有預設值的陣列 swift 中的array型別還提供乙個可以建立特定大小並且所有資料都被預設...

PHP筆記,陣列

1.php有兩種陣列 索引陣列 關聯陣列。索引和關聯兩個詞都是針對陣列的鍵而言的 1 索引陣列是指數組的鍵是整數的陣列,並且鍵的整數順序是從0開始,依次類推。索引陣列的初始化 fruit array 蘋果 香蕉 菠蘿 2 關聯陣列是指數組的鍵是字串的陣列。可以使用 print r 陣列名 語句輸出陣...