您的位置:首页 > 移动开发 > IOS开发

iOS笔记--oc语法9(NSArray相关知识)

2016-05-04 23:26 447 查看
声明:此为本人学习笔记,若有纰漏错误之处的可留言共同探讨

NSArray是OC语言的数组。区别于C语言数组的特点在于OC数组是一个对象,数组里面存储的也是一个个对象。不能直接存储基本数据类型(如int、long、short等等)。假如项目需求需要的话,可以先想基本数据类型转化成对象再进行存储。

我们来看看NSArray的几种创建方法

1通过对象的方法创建

// 1通过对象来创建数组

NSArray *arr1 = [[NSArray alloc]initWithObjects:@"string1", @"string2",@"string3" , nil];

// 2 通过一个数组了创建

NSArray *arr2 = [[NSArray alloc]initWithArray:arr1];

2 通过类方法来创建

// 3 通过对象来创建

NSArray *arr3 = [NSArrayarrayWithObjects:@"对象1", @"对象2",@"对象3", nil];

// 4 通过一个数组了创建

NSArray *arr4 = [NSArrayarrayWithArray:arr1];

3 通过快捷方式创建

NSArray *arr5 = @[@"a",@"b",arr2, @"c", @"d", @"e"];

接下来我们来看看NSArray常用的方法

// 1、获取数组元素个数

NSArray *arr = @[@"1",@"2",@"2",@"2",@"2",@"2"];

NSUInteger count =[arr count];

// 2、通过索引号获取相应的元素(2种)

NSString *s = [arr objectAtIndex:0];

NSString *s2 = arr[3]; // 越界访问元素会导致程序崩溃;

// 3、取出最后一个元素

[arr lastObject];

// 4、通过对象地址获取在数组中的下标

[arr indexOfObject:@"five"]; // 如果没找到返回NSNotFound,找到返回下标

// 5、判断数组中数组包含元素anObject

[arr containsObject:@"five"];

6、取出数组中的一部分元素

// 1)subarrayWithRange消息

// 作用:取出数组中指定范围内range的元素

NSArray *a = [arrsubarrayWithRange:NSMakeRange(3, 5)];

2)objectsAtIndexes消息

作用:从数组中获取指定下标的元素

// 获取数组部分内容:(下标不连续)

// NSMutableIndexSet: 整数集合类;

NSMutableIndexSet *indexSet =[[NSMutableIndexSet alloc] init];// 创建一个空的整数集合对象;

// 需求: 获取arr数组第0,3,5,6个元素;

[indexSet addIndex:0]; // 把整数0添加进去

[indexSet addIndex:3]; // 把整数3添加进去

[indexSet addIndex:5]; // 把整数5添加进去

[indexSet addIndex:6]; // 把整数6添加进去

//调用方法objectsAtIndexes:根据indexSet里面整数序号获取对象的元素,组成数组返回

NSArray *b =[arrobjectsAtIndexes:indexSet];

NSLog(@"%@",b);

6、判断NSArray中存储的对象是否为指定类型的对象

因为NSArray里面存储任意类型对象, 怎么才知道存储的对象是属于哪一个类;

isKindOfClass使用

[对象 isKindOfClass:[类名 class]] 判断对象是否属于该类; 如果属于返回YES,否则返回NO;

NSArray数组的遍历

用c语言的遍历方法遍历一个数组的所有元素

1、通过下标遍历数组

for(NSInteger i = 0; i < [arr count] ;i++)

{

arr[i];

}

2、NSEnumerator 枚举器

1)objectEnumerator消息

作用:正序输出所有元素

2)reverseObjectEnumerator消息

作用:逆序输出所有元素

3、快速枚举法

1)for in 语法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: