1.OC的數組成員是任意的對象指針 與C中的鏈表結構相似(以nil結尾) 一切的數組操做不能越界 ios
OC的數組分爲不可變數組 NSArray 可變數組 NSMutableArray 數組
NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil]; NSLog(@"%@",[array objectAtIndex:0]);//經過下標獲取數組成員(下標從0開始) NSLog(@"%ld",[array count]);//獲取數組有效成員個數 (不包括nil) for (i = 0; i < [array count]; i++) {//遍歷數組(C方法) NSLog(@"%@",[array objectAtIndex:i]); } NSLog(@"%@",array);//(OC)查看數組內容(先給array發送description消息,而後給每一個成員都發送一個description消息) NSArray * array1 = [[NSArray alloc]initWithArray:array];//建立數組對象 至關於拷貝 NSArray * arry2 = [NSArray arrayWithArray:array];//建立數組對象 至關於拷貝 NSEnumerator * enumer = [array objectEnumerator];//正序枚舉器 //建立一個枚舉器 把數組的每一個元素的地址一次賦給枚舉器,而後創建起某種關聯 (枚舉器只能用來讀數組成員) //枚舉時 會和數組建立某種關聯(修改監視器/迭代器) 限制枚舉的同時不能修改元素 只能讀不能寫 id obj; //第一次循環把數組的第一個元素賦給obj 第二次循環把第二個數組元素賦給obj while (obj = [enumer nextObject]) { //遍歷數組 NSLog(@"%@",obj); } //快速枚舉 第一次循環把array的第一個元素賦給ob 第二次循環把array的第二個元素賦給ob 直到nil(只能讀不能改) for(id ob in array){ NSLog(@"%@",ob); } //逆序輸出數組(建立逆序枚舉器 第一次循環把最後一個元素賦給obj ) NSEnumerator * enumer1 = [array reverseObjectEnumerator]; while (obj = [enumer1 nextObject]) { NSLog(@"%@",obj); } if ([obj isKindOfClass:[Dog class]]) //獲取類的類型 判是不是指定類的對象 if ([obj isMemberOfClass:[Dog class]]) { }
2.不可變數組 函數
-------查找 NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil]; NSUInteger index = [array indexOfObject:@"one123"];//返回第一個找到的數組成員對應的下標 找不到返回NSNotFound index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];//在指定範圍內查找 if (index != NSNotFound) { NSLog(@"%ld",index); } ----抽取 組成新的數組 NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]]; 《數字集合》 NSIndexSet這是個數字集合類 [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]產生一個數字集合
3.可變數組 spa
NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil]; [array addObject:@"five"];//在數組尾部插入元素 [array insertObject:@"six" atIndex:5];//在數組指定下標位置插入元素(不能越界,最大值爲length) [array removeObject:@"six"];//刪除指定元素(數組中出現的全部位置都將被刪除) [array removeObject:@"two" inRange:NSMakeRange(0, 3)];//從指定下標位置開始的指定長度內刪除指定元素 [array removeLastObject];//刪除最後一個元素 [array removeAllObjects];//刪除全部元素 [array replaceObjectAtIndex:3 withObject:@"ios"];//將指定下標位置元素替換爲指定的元素 [array exchangeObjectAtIndex:0 withObjectAtIndex:3];//將指定下標的兩個元素進行交換
4.字符串分割與拼接 指針
//@"" 空的字符串對象 -------分割 NSString * ptr = @"I am a man"; NSArray * array = [ptr componentsSeparatedByString:@" "];//將字符串總體做爲分割條件 返回值爲NSArray不可變數組 NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,則將NSArray轉化爲NSMutableArray NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];//以字符串中的字符做爲分割條件進行分割 《字符集合》 NSCharacterSet 這是個字符集合類 [NSCharacterSet characterSetWithCharactersInString:@", "]//把字符串轉化爲字符集合 -------拼接 NSString * str = [array componentsJoinedByString:@" "]; 若分割條件出如今開頭或者結尾,則會出現空串@"",若是不須要,則須要轉化成NSMutableString對空串進行處理 func1: [array1 removeObject:@""]; //找到空串直接刪除 func2: for(id obj in array1){ if([obj length] == 0) //空串的長度爲0 if([obj isEqualToString:@""]) //與空串進行比較(字符串是不能進行==比較的,要使用函數) }