/*OC中的集合類-
NSArray 用於對象有序集合
NSSet 用於對象無序集合
NSDictionary 用於鍵值映射
這三種集合類是不可變的(一旦初始化後,就不能改變)
(可變集合類,這三種可變集合類是對應上面三種集合類的子類)
NSMutableArray NSMutableSet NSMutableDictionary
這些集合類只能手機Cocoa對象(NSObject對象),如果想保存一些原始的C數據(如:int,float,double,BOOL等),則需要將這些原始的C數據封裝成NSNumber類型的,NSNumber對象是Cocoa對象,可以被保存在集合類中。
*/
/*
NSArray OC數組
*/
//==============================================================
//C數組:所有元素必須是相同的數據類型
int age[] = {1,2,3};
age[1]; //取數組中的元素
//把car放C數組
Car *car1 = [[Car alloc] init];
Car *cAry[3] = {car1,[Car new],[Car new]};
//==============================================================
//創建OC數組,ary1是空數組(這種方法不用)
NSArray *ary1 = [NSArray array];
//ary2初始化時有一個元素
NSArray *ary2 = [NSArray arrayWithObject:@"jereh"];
//創建有多個元素的數組
//nil不能缺省,是數組結束標志,不能作為元素存到數組裡
NSArray *ary3 = [NSArray arrayWithObjects:@"h",@"e",@"kong", nil];
//快速創建數組 ,@[] 不能存nil
NSArray *ary4 = @[@"c",@"s",@"d",@"n"];
//==============================================================
//OC數組元素個數 -(unsigned) Count;
NSArray *ary5 = @[@"c",@"s",@"d",@"n"];
[ary5 count];
// ary5.count;
NSLog(@"數組元素個數:%ld",ary5.count);
//==============================================================
//訪問數組元素 -(id) objectAtIndex:(unsigned int)index;//獲取指定索引處的對象
NSArray *ary6 = @[@"c",@"s",@"d",@"n"];
// [ary6 objectAtIndex:0];//獲得數組中某個位置的元素
NSLog(@"訪問數組:%@",[ary6 objectAtIndex:0]);
NSLog(@"訪問數組:%@",ary6[0]); //C數組的簡便方法
//==============================================================
//1.遍歷OC數組(按照順序輸出)
Car *car = [[Car alloc] init];
NSArray *ary7 = @[@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",car];
for (int i=0; i
NSLog(@"遍歷數組ary7:%@",ary7[i]);
}
/*2.快速遍歷OC數組(快速枚舉):裡面的元素都是OC對象,所以都是id類型;
表示把ary7中的每個元素都賦值給obj,然後循環
缺點:不知道取出的對象在數組中的位置。
限制:不應在枚舉過程中增加會刪除數組中的指針
*/
int i = 1;
for (id obj in ary7) {
NSLog(@"快速遍歷第%i個:%@",i,obj);
i++;
}
/*3.利用block遍歷數組
block沒有返回值,有三個參數,obj當前對象,idx位置,*stop是停止遍歷
每遍歷一個對象,block都會被調用一次
(方法參數block部分,按回車會自動生成,不用手動寫)
*/
[ary7 enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) {
//BOOL *stop
if (idx>0) {
*stop = YES;
}
NSLog(@"block快速遍歷 第%ld個元素:%@",idx,obj);
}
];
//==================================================================
/*其他用法
-(BOOL)containsObject:obj 確定數組中是否包含對象obj
-(id)objectAtIndex:i 存儲在位置i的對象
-(NSUInteger)indexOfObject:obj 第一個包含obj元素對的索引號
/*
NSMutableArray OC可變數組
是NSArray的子類,類似NSArray,但是可以增加或刪除指針。
*/
//=========================================================
//創建空數組
NSMutableArray *ary1 = [NSMutableArray array];
//添加元素
[ary1 addObject:@"a"];
[ary1 addObject:@"d"];
NSLog(@"ary1 %@",ary1);
//添加多個元素
NSMutableArray *ary2 = [NSMutableArray array];
[ary2 addObjectsFromArray:ary1];
NSLog(@"ary2 %@",ary2);
//=========================================================
//刪除元素
NSMutableArray *ary3 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
//按照索引位置刪除元素
[ary3 removeObjectAtIndex:0];
NSLog(@"ary3 %@",ary3);
//刪除指定元素
[ary3 removeObject:@"b"];
NSLog(@"ary3 %@",ary3);
//刪除全部元素
[ary3 removeAllObjects];
//刪除最後一個元素
[ary3 removeLastObject];
NSMutableArray *ary4 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
//在指定的范圍內找到特定的元素進行刪除
[ary4 removeObject:@"b" inRange:NSMakeRange(0, 2)];
NSLog(@"ary4 %@",ary4);
//刪除某個范圍內的元素
NSMutableArray *ary5 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
[ary5 removeObjectsInRange:NSMakeRange(0, 3)];
NSLog(@"ary5 %@",ary5);
//刪除了同時存在後面數組中的元素
NSMutableArray *ary6 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d", nil];
NSArray *dAry = @[@"d"];
[ary6 removeObjectsInArray:dAry];
NSLog(@"ary6 %@",ary6);
//=========================================================
// NSArray
NSArray *ary7 = @[@"aa",@"bb"];
//添加另一個數組中的全部元素到當前數組(重新設置數組元素,原來的元素被刪掉了)
NSMutableArray *ary8 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];
[ary8 setArray:ary7];
NSLog(@"ary8 %@",ary8);
//添加多個元素(在原數組的末尾添加新數組元素)
NSMutableArray *ary9 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];
[ary9 addObjectsFromArray:ary7];
NSLog(@"ary9 %@",ary9);
//在索引位置添加一個元素
[ary9 insertObject:@"jereh" atIndex:1];
NSLog(@"ary9 %@",ary9);
//=========================================================
//替換
NSMutableArray *ary10 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];
[ary10 replaceObjectAtIndex:2 withObject:@"apple"];
NSLog(@"ary10 %@",ary10);
//用新的數組替換當前數組中某個范圍的元素
[ary10 replaceObjectsInRange:NSMakeRange(0, 3) withObjectsFromArray:@[@"Hello"]];
NSLog(@"ary10 %@",ary10);
//交換當前數組中某兩個索引位置的元素
[ary10 exchangeObjectAtIndex:0 withObjectAtIndex:2];
NSLog(@"ary10 %@",ary10);
//=========================================================
//網址解析
NSString *str = @"http://www.baidu.com:/agsdha";
NSArray *ary11 = [str componentsSeparatedByString:@"//"];
// NSString *str1 = ary11[1];
NSArray *ary12 = [ary11[1] componentsSeparatedByString:@":"];
NSArray *ary13 = [[ary11 lastObject] componentsSeparatedByString:@":"];//用lastObject取最後一個元素
NSLog(@"ary11 %@",ary11);
NSLog(@"ary12 %@",ary12);
NSLog(@"ary13 %@",ary13);
NSLog(@" %@",ary12[0]);
//給數組分配容量
NSMutableArray *array = [NSMutableArray arrayWithCapacity:20];