您的位置:首页 > 移动开发 > Objective-C

iOS/Objective-C数组NSArray操作总结20130608更新

2013-06-07 13:56 323 查看
个人整理转载请注明出处http://blog.csdn.net/rylt2011/article/details/9046983

NSArray不可变数组,因为NSArray没有成员方法修改,OC数组元素是任意对象,只能存放对象指针,以nil结尾
 
创建数组
创建数组并赋初值
NSArray * array = [[NSArray alloc]initWithObjects:@"one", @"two", @"three",@"two",@"abc",@"five",nil];
NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three",@"two",@"abc",@"five",nil];
 
获取数组中元素的个数(两种方式)
1.     array.count
2.     [array count]
 
根据下标获取对象
NSString * numberString = [array objectAtIndex: 3];
 
查找数组元素第一次出现的下标
NSUInteger index = [arrayindexOfObject:@"two"];
 
下标在某个范围内查找数组元素
index = [array indexOfObject:@"two"inRange:NSMakeRange(2, 2)];
 
通过已有数组建立新数组
NSArray * array1 = [NSArray arrayWithArray:array];
 
可变数组NSMutableArray可使用所有不可变数组NSArray的操作方法
将不可变数组转换成可变数组
NSMutableArray * array2= [NSMutableArrayarrayWithArray: array];
 
在数组末尾加入一个元素
[array2 addObject:@”end”];
 
在制定下标的位置插入一个元素
[array2 insertObject:@”middle”atIndex:2];
 
删除数组中所有指定元素对象
[array2 removeObject:@”inof”];
 
 
删除数组中指定范围的所有指定元素对象
[array2 removeObject:@”info”inRange:NSMakeRange (3,4)];
 
删除数组中所有元素
[array2 removeAllObjects];
 
将指定下标所对应的元素对象替换
[array2 replaceObjectAtIndex:2withObject:@”abc”];
 
交换两个指定下标所对应的元素对象
[array exchangeObjectAtIndex:0 withObjectAtIndex:4];
 
NSString * string = @”Very Good, I want make moremoney!”;
以给定字符串整体为分割条件,把原字符串分割出来的单词组成一个数组
NSArray * array3=[string componentsSeparatedByString:@” ”];
 
以给定字符串中的每个字符分别作为分割条件
NSArray * array4 = [string componentsSeparatedByCharactersInset:[NSCharacterSetcharacterSetWithCharacterInString: @”,  ”]];
就是以”,”和” ”作为分割符。
 
以指定字符串为连接符将数组拼接成字符串
NSString * prt = [array3 componentsJoinedByString:@” ”];
 
创建一个枚举器来循环遍历数组
NSEnumerator * enumer = [array objectEnumerator];
NSMutableArray * newArray = [NSMutableArrayalloc]initWithCapacity:0];
while(obj = [enumer newtObjecgt])
{
           [newArrayaddObject:obj];
}
枚举器和数组会产生一种关联,把数组每个元素的地址赋给了枚举器id obj;
执行过程:第一次循环,把数组元素0赋给obj;第二次循环把数组元素1赋给obj;一次类推直到nil;循环退出
 
快速枚举
for(id obj1 in array){
     [newArrayaddobjet:obj1];
}
 
创建一个逆序枚举器
NSEnumerator * enumer2 = [arrayreverseObjectEnumerator];
把数组元素的地址逆序赋给枚举器
在枚举遍历数组时,不能对数组中的元素数据进行修改(枚举主要用于读取数组的内容,)
在指定范围内查找指定元素第一次出现的下标
 index = [arrayindexOfObject:@”two” inRange: NSMakeRange(2,2)];
 
NSIndexSet数字集合对象
NSArray * array4 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesIndexesInRange:NSMakeRange(2,3)]];
把下标2、3、4组成一个数字集合,相当于数组多个元素的抽取
 
常用的NSArray方法
创建一个数组,obj1,obj2…是其对象
+(id)arrayWithObjects:obj1,obj2,…nil
 
确定数组中是否包含对象obj(使用isEqual方法)
-(BOOL)containsObject:obj
数组中元素的个数
-(NSUInteger)count
 
第一个包含对象obj的元素索引好(使用isEqual方法)
-(NSUInteger)indexOfObject:obj
 
存储在元素i的对象
-(id)objectAtIndex:i
 
将selector指示的消息发送给数组中的每个元素
-(void)makeObjectPerformSelector:(SEL)selector
 
根据selector指定的比较方法对数组进行排序
-(NSArray*)sortedArrayUsingSelector:(SEL)selector
 
将数组写入指定的文件中,付过flag为YES,那么先创建一个临时文件
-(BOOL)writeToFile:pathatomically:(BOOL)flag
 
常用的NSMutableArray方法
创建一个空数组
+(id)array
使用指定的初始size创建一个数组
+(id)arrayWithCapacity:size
 
使用指定的初始size初始化新分配的数组
-(id)initWithCapacity:size
 
将对象添加到数组的末尾
-(void)addObject:obj
 
将对象obj插入数组的i元素
-(void)insertObject:objatIndex:i
 
将数组中序号为i的对象用对象obj替换
-(void)replaceObjectArIndex:iwithObject:obj
 
从数组中删除所有obj
-(void)removeObject:obj
 
从数组中删除元素i,将序号为i+1的对象移至数组的结尾
-(void)removeObjectAtIndex:i
 
 
用selector指示的比较方法将数组排序
-(void)sortUsingSelector:(SEL)selector
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息