程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> OC:OC中的集合類

OC:OC中的集合類

編輯:關於C

/*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];

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved