數組 一.認識數組 oc中可以把NSObject對象的子類放到數組這個集合中,但是int、float、double等基礎數據類型需要先進行轉換才可以存入數組。 oc中數組以NS開頭,其中分為可變數組和不可變數組; 1.不可變數組(NSArray) 數組在創建的時候被初始化之後,不可以再次進行增、刪、
==========================
數組
==========================
一.認識數組
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(@"不包含");
}