OC中Foundation框架的数组和字典

——<a href="" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ——-

在Foundation 框架中,NSArray、 NSSet 、NSDictionary 称为集合类:

NSArray :不可变数组

NSMutableArray :不可变数组

(有序的)

NSArray:

C语言中的数组,,只能存放一种类型的数据。

OC中的数组,就是以面向对象的方式操作数组。

c语言数组:只能放一种类型的数据int ages[10] = {1,90,89,17};Person *p = [[Person alloc]init];//数组放5个person对象Person *persons[5] = {p , [[Person alloc]init]};

OC数组的创建:

<span style="color:#ff0000;">//OC数组只能存放OC对象、不能存放非OC对象类型(基本数据类型),比如int ,struct ,enum等// OC数组不能存放nil值</span>//这个array永远是空数组,并没有进行初始化//NSArray *array = [NSArray array];1.NSArray的创建NSArray *array2 = [NSArray arrayWithObject:@"jack"];<span style="color:#ff0000;"> //nil数组元素结束的标记,不能省</span>NSArray *array3 = [NSArray arrayWithObjects:@"jack",@"rose",nil];//NSArray *array4 = [NSArray arrayWithObjects:@"jack",@"rose", nil ]; <span style="color:#ff0000;"> //快速创建一个NSArray对象 ,编译器特性NSArray *array4 = @[@"jack",@"rose"];//掌握,常用</span>

计算数组中元素的个数:2. NSArray的元素个数// [array2 count];NSLog(@"%ld",array2.count) ; <span style="color:#ff0000;">OC数组元素的访问:</span> <span style="color:#ff0000;"> NSArray中元素的访问//NSLog(@"%@",[array3 objectAtIndex:1]) ; //第一种方式,不常用 = array[1];</span><span style="color:#ff0000;"> NSLog(@"%@",array3[0]);//第二种方式 array[1] 编译器特性,用法和C中一样开发中常用</span>数组的遍历:

<span style="color:#ff0000;"><strong>for循环遍历:</strong></span> for (int i=0; i <array.count; i++) {NSLog(@"%@",array[i]); }<strong><span style="color:#ff0000;">快速遍历: </span></strong><span style="color:#ff0000;"> id obj代表着数组中的每一个元素,</span><span style="color:#ff0000;"><strong>原理:把数组中的每一个元素拿出来赋值给obj,每赋值一次调用一次循环体</strong></span> //int i = 0;for (id obj in array){//找出obj在数组中的位置NSUInteger i = [array indexOfObject:obj];NSLog(@"%ld—%@",i,obj);// i++;}<span style="color:#ff0000;"><strong>通过block遍历:</strong></span> [array enumerateObjectsUsingBlock: //每遍历到一个元素,就会调用一次block //并且当前元素和索引位置当作参数传给block ^(id obj, NSUInteger idx, BOOL *stop) {NSLog(@"%ld – %@",idx,obj);}];block 分析:<pre name="code" class="objc">// void ^(myblock)(id, NSUInteger, BOOL) = ^(id obj, NSUInteger idx, BOOL *stop)// {//NSLog(@"%ld – %@",idx,obj);////if(idx == 1) //遍历完1就停止//{////停止遍历//*stop = YES;//}//// };//// for(int i = 0;i <array.count,i++)// {// //用来标记是否需要停止遍历//BOOL isStop = NO;//////取出元素//id obj = array[i];////myblock(obj, i, &isStop);////if(isStop)//{//break;//}// }<span style="color:#ff0000;"><strong>利用枚举遍历数组:</strong></span>NSEnumerator *en = [array objectEnumerator];id obj;int j = 0 ;while (obj = [en nextObject]) {NSLog(@"5遍历array:%d–>%@",j,obj);j++;}

NSMutableArray:(可变数组)

NSMutableArray *array = [NSMutableArray array]; //没有值//添加元素[array addObject:[[Person alloc]init]];[array addObject:@"jack"];//删除元素//[array removeAllObjects];//删除指定对象[array removeObject:@"jack"];[array removeObjectAtIndex:0];//错误写法// [array addObject:nil];NSLog(@"%ld",array.count);<span style="color:#ff0000;">//@[] 只创建不可变数组NSArray,不能创建可变数组//错误写法NSMutableArrary *array = @[@"jack",@"rose"];[array addObject:@"jim"];</span>

(无序的)

NSSet和NSMutableSet:

<span style="color:#ff0000;">NSSet和NSArray的对比: 1》共同点 *都是集合,都能存放OC对象 *只能存放OC对象,不能存放非OC对象类型(基本数据类型: int,char ,float等,结构体,枚举) *本身不可变,都有一个可变子类 2》不同点:NSArray有顺序,NSSet没有顺序</span> #import <Foundation/Foundation.h>int main(){NSMutableSet *s = [NSMutableSet set];//添加元素[s addObject:@"jack"];//删除元素[s removeObject:<#(id)#>];return 0;}//set的基本使用void test(){NSSet *s = [NSSet set];NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil];//随机拿出一个元素NSString *str = [s2 anyObject];NSLog(@"%ld",s2.count);}NSDictionary和NSMutableDictionary:key:–>value索引:–>文字内容里面存储东西都是键值对//字典的创建方式一 <span style="color:#ff0000;"> //NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];</span>//字典的创建方式二// NSArray *keys = @[@"name",@"address"];// NSArray *objects = @[@"jack",@"北京"];// NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];//字典的创建方式三//NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"jack",@"name",@"北京" ,@"address",nil];//字典的创建方式四 编译器特性,快速创建方式 <span style="color:#ff0000;"> NSDictionary *dict = @{ @"name" : @"jack",@"address" : @"北京" }; //建议这样写</span><span style="color:#ff0000;">//获取字典中的内容,根绝name取出jack//id obj = [dict objectForKey:@"name"];//编译器新特性id obj = dict[@"name"];//与上一句等价</span>NSLog(@"%@",obj);<span style="color:#ff0000;"> NSLog(@"%ld",dict.count); // 返回的是键值对的个数</span>字典的常用创建方式:<span style="color:#ff0000;">NSDictionary *dict = @{ @"name" : @"jack",@"address" : @"北京" };</span>所有的失败,与失去自己的失败比起来,更是微不足道

OC中Foundation框架的数组和字典

相关文章:

你感兴趣的文章:

标签云: