日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC-NSArray

發(fā)布時間:2024/1/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC-NSArray 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.認識數(shù)組

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

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

?

1.不可變數(shù)組(NSArray)

數(shù)組在創(chuàng)建的時候被初始化之后,不可以再次進行增、刪、改;

?

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

? ? ? ? //數(shù)組需要先分配內(nèi)存再使用,

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

? ? ? ? //initWithObjects 用多個對象對 [NSArray alloc] 分配的內(nèi)存空間進行初始化

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

?? ? ? ?

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

? ? ? ? //【注】以小括號包圍(打印的結果),每個數(shù)據(jù)都是以逗號隔開的數(shù)據(jù)格式是數(shù)組數(shù)據(jù)

?

如: (

? ? one,

? ? two,

? ? three

)

?? ? ? ?

?? ? ? ?

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

? ? ? ? mydog.value = 100;

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

?? ? ? ?

? ? ? ? //oc中的數(shù)組可以存儲不一樣類型的數(shù)據(jù)

? ? ? ? //定義objectArr這個對象并給它分配內(nèi)存并初始化值,最后一個nil結尾一定不要省略

? ? ? ? //數(shù)組初始化之后,不能對其進行增刪改的數(shù)組,是不可變數(shù)組,不可變數(shù)組的數(shù)據(jù)只有第一次初始化的時候給賦值,之后不允許進行增刪改;可以理解為是一種只讀做用;

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

?? ? ? ?

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

?? ? ? ?

? ? ? ? //取元素

? ? ? ? //【注】嚴禁數(shù)組越界

? ? ? ? //隱式轉換

? ? ? ? //

? ? ? ? dog* tmp = [objectArr objectAtIndex:0];

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

?? ? ? ?

? ? ? ? //取數(shù)組元素個數(shù)

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

?? ? ? ?

? ? ? ? //遍歷數(shù)組

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

?? ? ? ? ? ?

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

? ? ? ? }

? ? ? ? //oc中遍歷數(shù)組有一個更簡單的方法

? ? ? ? //這個語法就是for(in)語法,for循環(huán)先去判斷NSString* str 是否在arr中,如果在,則繼續(xù)循環(huán)

? ? ? ? //數(shù)組會遍歷arr的元素個數(shù)次

? ? ? ? for (NSString* str in arr) {

? ? ? ? ? ? NSLog(@"%@",str);

? ? ? ? }

? ? ? ? //優(yōu)缺點比對:

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

? ? ? ? //第二種寫法簡潔,并且不會出現(xiàn)數(shù)組越界導致程序崩潰的問題

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

?? ? ? ?

?? ? ? ?

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

? ? ? ? //創(chuàng)建了一個不可變數(shù)組并初始化了值。

?? ? ? ?

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

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

? ? ? ? NSLog(@"%@",TempArr);

?? ? ? ?

? ? ? ? //[arr objectAtIndex:0]

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

————————————————————————————————————————————————————————————————————————

? ? ? ? //NSMutableArray 為可變數(shù)組,可以進行增刪改

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

?? ? ? ?

? ? ? ? //添加元素

? ? ? ? [m_arr addObject:@"1"];

? ? ? ? [m_arr addObject:mydog];

? ? ? ? [m_arr addObject:@"3"];

?? ? ? ?

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

? ? ? ? [m_arr removeObjectAtIndex:0];

?? ? ? ?

? ? ? ? //交換數(shù)組元素

? ? ? ? [m_arr exchangeObjectAtIndex:0 withObjectAtIndex:1];

?? ? ? ?

? ? ? ? //清空數(shù)組? 刪除數(shù)組中所有元素

? ? ? ? [m_arr removeAllObjects];

?? ? ? ?

? ? ? ? //刪除數(shù)組元素中最后一個元素

? ? ? ? [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(@"不包含");

? ? ? ? }

? ? ? ??

?

轉載于:https://www.cnblogs.com/GJ-ios/p/5285987.html

總結

以上是生活随笔為你收集整理的OC-NSArray的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。