NSArray
2015-09-27 22:44
260 查看
这个是用来存储OC对象的数组,记住,只能存储OC对象,非OC对象编译就直接报错
这是1个类
特点:
存储多个数据
长度固定
只能存储OC对象
每1个元素都是有序的
创建字符串的时候,不要使用new array alloc等来创建,因为创建出来的数组长度是0,没有意义
最常用的创建NSArray数组的方法:
arrayWithObjects
注意:
最后要写1个nil 代表结束
写在中间的nil,会认为元素到这里就结束
-
取出数组元素的值
NSArray数组名[下标];
如果下标越界,直接报错
调用方法:
NSString *str = [arr objectAtIndex:0];
NSArray数组的元素:
是id类型的,所以可以存储任意的OC对象
取出来的元素可以赋值给任意的指针变量
取出NSArray数组的元素不能使用点语法
可以在NSLog中使用%@将元素全部输出
取出元素的个数
取出下标的元素的值
判断是否包含某个元素
取出首个元素
取出最后的元素
取出某个元素第一次出现的下标
指定范围内元素出现的第一次的下标
NSArray数组的简要初始化
不必在后面加nil
遍历
这里使用for循环遍历
使用for增强
使用block遍历NSArray数组
(void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block
这是1个类
特点:
存储多个数据
长度固定
只能存储OC对象
每1个元素都是有序的
创建字符串的时候,不要使用new array alloc等来创建,因为创建出来的数组长度是0,没有意义
最常用的创建NSArray数组的方法:
arrayWithObjects
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"rose",@"lilei", nil]; NSLog(@"%@",arr);
注意:
最后要写1个nil 代表结束
写在中间的nil,会认为元素到这里就结束
-
取出数组元素的值
NSArray数组名[下标];
如果下标越界,直接报错
调用方法:
NSString *str = [arr objectAtIndex:0];
NSArray数组的元素:
是id类型的,所以可以存储任意的OC对象
取出来的元素可以赋值给任意的指针变量
取出NSArray数组的元素不能使用点语法
可以在NSLog中使用%@将元素全部输出
取出元素的个数
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil]; NSUInteger num = arr.count; NSLog(@"%lu",num);
取出下标的元素的值
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil]; NSLog(@"%@",[arr objectAtIndex:1]) ;
判断是否包含某个元素
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil]; // NSLog(@"%@",[arr objectAtIndex:1]) ; BOOL res = [arr containsObject:@"lili"]; if (res == YES) { NSLog(@"包含"); }else { NSLog(@"不包含"); }
取出首个元素
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil]; NSString *str = arr.firstObject; NSLog(@"%@",str);
取出最后的元素
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"rose", nil]; NSString *str =arr.lastObject; NSLog(@"%@",str);
取出某个元素第一次出现的下标
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"jack",@"rose", nil]; NSUInteger num = [arr indexOfObject:@"jack"]; NSLog(@"%lu",num);
指定范围内元素出现的第一次的下标
NSArray *arr = [NSArray arrayWithObjects:@"jack",@"lili",@"jack",@"rose", nil]; NSUInteger num = [arr indexOfObject:@"jack" inRange:NSMakeRange(1,2)]; NSLog(@"%lu",num);
NSArray数组的简要初始化
NSArray *arr = @[@"jack",@"lilei",@"lili"];
不必在后面加nil
遍历
NSArray *arr = @[@"jack",@"lilei",@"lili"];
for (int i = 0 ; i<arr.count; i++)
{
NSLog(@"arr[%d] = %@",i,arr[i]);
}
这里使用for循环遍历
NSArray *arr = @[@"jack",@"lilei",@"lili"];
for(NSString *str in arr)
{
NSLog(@"%@",str);
}
使用for增强
使用block遍历NSArray数组
(void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block
NSArray *arr = @[@"jack",@"lilei",@"lili"];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"arr[%lu] = %@",idx,obj);
if (idx == 1)
{
*stop = YES;
}
}];
相关文章推荐
- Python基于VS2013 开发环境搭建 Hello World 10分钟搞定
- TextView如何在超出来的字数后用省略号显示?
- 八皇后问题
- MySQL嵌套查询
- 软件测试
- Android dispatchTouchEvent touch事件的分发
- [BZOJ1102] [POI2007]山峰和山谷Grz
- hdu 3001 Travelling (旅行商问题)
- JAVA历史
- 浅析spring IOC操作
- OSX10.10.5配置apache2&php5&VirtualHost
- MongoDB YAML格式的配置文件
- ubuntu 14.04开机出现错误“Error found when loading /root/.profile”解决
- virtual box增强包
- Spark SQL连接数据库找不到Mysql驱动解决方法
- C#反射和特性
- 《重新定义公司:谷歌是如何运营的》比较全面的谷歌公司的管理技巧,五星推荐
- 单向链表的倒序输出(栈实现和递归实现)
- iOS开发系列--通知与消息机制--转
- ACM学习历程—HDU5490 Simple Matrix (数学 && 逆元 && 快速幂) (2015合肥网赛07)