Objective,object
OC中儲存資料最常用 的兩個容器就是數組和字典,而作為最常用的,應該瞭解這所有的特點,及用法。
OC中的數組是一個容量,有序的管理了一系列元素,並且存放在數組裡的元素,必須是物件類型。
不可變數組,見名知意,不可改變的,只要建立成功之後都不能改變數組容量,元素。
建立一個不可變數組對象
//1.初始化方法(多個對象用逗號隔開,並且最後一個對象與nil之間也要有逗號)
NSArray *array1 = [[NSArray alloc] initWithObjects:@"zhonger",@"honghuang",@"taixu",@"zhili", nil]; //nil不是對象,只是一個標誌,告訴編譯器數組賦值結束
//2.便利構造器
NSArray *array2 = [NSArray arrayWithObjects:@"zhuba",@"bada",@"zhonger",@"duliu", nil];
列印出的資料以()內容顯示,比如:
array1 is ( zhonger, honghuang, taixu, zhili)
//3.笑笑文法 文法糖,字面量 這是不可變數組的寫法。。。
//OC中的數組可以存放不同類型的對象
NSArray *array3 = @[@"yousiyi", @"huangshenme", @"shuishen", @"qiuxiang", @12];
//數組的兩個核心方法 count objectAtIndex:
//count 求數組元素個數
unsigned long count = [array1 count];
NSLog(@"array1count is %lu",count); //可以列印出元素的個數
//objectAtIndex:通過給定的下標,找到相應的元素
NSString *bada = [array2 objectAtIndex:1];
NSLog(@"bada is %@",bada);
NSString *zhonger = array2[2]; //文法糖表達方式
NSLog(@"zhonger is %@",zhonger);
//遍曆array3裡面的每一個元素
unsigned long count1 = [array3 count];
for (int i = 0; i < count1; i ++) {
NSLog(@"%@",array3[i]);//文法糖
}
//判斷數組中是否包含某個元素
BOOL isTrue = [array2 containsObject:@"zhuba"];
NSLog(@"isTrue is %d",isTrue);
//擷取某個元素所在的數組下標
NSUInteger index = [array2 indexOfObjectIdenticalTo:@"bada"];
NSLog(@"index is %lu",index);
//通過數組來實現分割字串,拼接字串、
//以空格分隔字串
NSString *str = @"zhonger m 19 m";
NSArray *resultArray = [str componentsSeparatedByString:@" "];
//以66666拼接字串
NSArray *rArray = @[@"bada", @"qiuxiang",@"zaiyiqi"];
NSString *str1 = [rArray componentsJoinedByString:@"66666"];
//至於可變數組,在不可變數組的情況下,提供了增刪改的操作,讓數組功能變得更加多樣化
//1.建立一個可變數組
NSMutableArray *mArr = [[NSMutableArray alloc]initWithCapacity:0];
//2.便利構造器
NSMutableArray *mArr1 = [NSMutableArray arrayWithCapacity:0];
//3.可變數組的字面量建立方式
NSMutableArray *mArr2 = [@[@"zhonger", @"dada", @"zhuzhu", @"linlin"]mutableCopy];
//往可變數組裡添加元素,addobject
[mArr2 addObject:@"addobject"];
//往可變數組的指定位置插入一個新的元素 insertObject
[mArr2 insertObject:@"charu" atIndex:1];
//移除可變數組中的某一元素
//通過下標
[mArr2 removeObjectAtIndex:4];
NSLog(@"mArr2 is %@",mArr2);
//通過指定內容
[mArr2 removeObject:@"zhuzhu"];
NSLog(@"mArr2 is %@",mArr2);
//刪除數組中最後一個元素
[mArr2 removeLastObject];
NSLog(@"mArr2 is %@",mArr2);
//刪除數組中所有的元素
//[mArr2 removeAllObjects];
//NSLog(@"mArr2 is %@",mArr2);
//替換可變數組中的元素
[mArr2 replaceObjectAtIndex:0 withObject:@"gou"];
[mArr2 replaceObjectAtIndex:1 withObject:@"taixu"];
NSLog(@"mArr2 is %@", mArr2);
//交換可變數組中兩個元素的位置
[mArr2 exchangeObjectAtIndex:0 withObjectAtIndex:1];
NSLog(@"mArr2 is %@", mArr2);
注意:無論是不可變還是可變數組,如果是在MRC環境下,只要加入這個數組中,都是導致引用計數加1,作為三大容量之一,數組存放的是有序的對象,不同於字典的有序,數組可以實現排序。