Foundation框架-数组
来源:互联网 发布:骆驼鞋 知乎 编辑:程序博客网 时间:2024/04/27 15:32
NSArray :数组
1>OC数组只能存放OC对象,不能存放非OC对象,如:int,struct,enum等
2>可以存放不同类型的对象
3>OC数组不能存放nil,因为nil在数组是数组元素结束的标志
C语言数组:只能存放同一数据类型的元素,如:int a[10]={1,2,3};
OC数组可以存放不同类型的数据,如下
// 创建一个Person对象 Person *p = [[Person alloc] init]; // array数组有Person类的p对象和"jack"字符串元素 NSArray *array = [NSArray arrayWithObjects:p,@"jack", nil];
数组的用法
调用数组的类方法[NSArray arrayWithObject:id],这个类方法只能添加一个元素,id为任何数据类型的对象,调用[NSArray arrayWithObjects:id.....,nil]时,这个类方法可以为数组添加N个元素,但是结尾要有一个nil标志,为数组元素结束的标志,如
//只能为数组添加一个元素 NSArray *array1= [NSArray arrayWithObject:@"I am jack"]; // array数组有Person类p对象,"jack"字符串元素等,以nil结束 NSArray *array2 = [NSArray arrayWithObjects:p,@"jack",@"1234",@"I love OC", nil];获取数组的元素个数,利用数组对象的count方法[array count]或array.count,返回值时NSInteger类型,输出占位符要用@"ld"
NSArray *array2 = [NSArray arrayWithObjects:p,@"jack",@"1234",@"I love OC", nil]; NSLog(@"%ld",array2.count); //返回值时I+NSInteger类型,输出占位符要用@"ld"
快速创建一个数组
// 创建一个Person对象 Person *p = [[Person alloc] init]; NSArray *array4 = @[p,@"jack",@"I love OC",@"1234"];
访问数组的某个元素的值,可以调用对象方法objectAtIndex:NSInteger,也可以利用C语言访问数组的形式,即:数组名+下标 的形式(不是C语言,而是编译器的特性,编译器遇到这种格式时,自动转换成对象方法objectAtIndex:NSInteger)
// array数组有Person类p对象,"jack"字符串元素等,以nil结束 NSArray *array2 = [NSArray arrayWithObjects:p,@"jack",@"1234",@"I love OC", nil]; NSLog(@"%@",[array2 objectAtIndex:2]); //调用对象方法objectAtIndex // array数组有Person类p对象,"jack"字符串元素等,以nil结束 NSArray *array3 = [NSArray arrayWithObjects:p,@"jack",@"1234",@"I love OC", nil]; NSLog(@"%@",array3[2]); //以C语言形式:数组名+下标
遍历字符串
1>利用for循环,以数组长度作为界限,依次访问
<pre name="code" class="objc"> Person *p = [[Person alloc] init]; NSArray *array4 = @[p,@"jack",@"I love OC",@"1234"]; for (int i=0; i<array4.count; i++) { NSLog(@"%@",array4[i]); }不能够显示对应元素的序号,输出结果
<Person: 0x1002057e0> jack I love OC 1234
2>取出array数组中的每一个元素给obj,然后执行一次循环体
Person *p = [[Person alloc] init]; NSArray *array4 = @[p,@"jack",@"I love OC",@"1234"]; for (id obj in array4) { NSUInteger i = [array4 indexOfObject:obj]; // 返回obj元素对应的元素号 NSLog(@"%ld - %@",i,obj); }输出结果
0 - <Person: 0x10010c4c0> 1 - jack 2 - I love OC 3 - 12343>每遍历到一个元素,就会调用一次block,并且当前元素和索引位置定做参数传给block
调用对象的enumerateObjectsUsingBlock方法
Person *p = [[Person alloc] init]; NSArray *array4 = @[p,@"jack",@"I love OC",@"1234"]; [array4 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld - %@",idx,obj); }];
输出结果
0 - <Person: 0x10010c4c0> 1 - jack 2 - I love OC 3 - 1234
以上是对数组的学习和认识,做出的总结
0 0
- Foundation框架-数组
- Foundation框架中的 数组
- Foundation框架,数组---之二
- oc学习之Foundation框架--数组
- Object-C Foundation 框架汇总之-数组,字典,集合
- Foundation框架-字符串
- Foundation框架-集合
- Cocoa Foundation 框架:NSArray数组的使用
- Foundation框架学习2--数组、字典、集合
- Foundation框架基础 NSMutableArray-可变数组
- foundation框架--NSArray类、数组常用操作
- Foundation框架----字符串、数组连载三
- Foundation框架—数组 NSArray -NSMutableArray
- Foundation框架-02 NSArray
- Foundation框架-03 NSDictionary
- iOS-Foundation框架(NSDateFormatter)
- Foundation框架
- Foundation框架
- Freemarker的Interpolation
- c++空类实例大小不是0原因
- python模拟登录http请求中的Accept-Language
- html5图片的拖拽
- 程序的Debug 版本和Release 版本
- Foundation框架-数组
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- from nova ironic to horizon(6)
- (KMP 1.1)hdu 1711 Number Sequence(KMP的简单应用——求pattern在text中第一次出现的位置)
- [BZOJ2002]HNOI2010弹飞绵羊|LCT
- 前段时间的poj记录
- 又做出一道题目了~
- RQNOJ292 Cantor表 题解、、
- The Scarcity Effect