1.OC的数组成员是任意的对象指针 与C中的链表结构类似(以nil结尾) 一切的数组操作不能越界
OC的数组分为不可变数组 NSArray 可变数组 NSMutableArray
NSArray
* array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",
nil];NSLog(@"%@",[array
objectAtIndex:0]);//通过下标获取数组成员(下标从0开始)NSLog(@"%ld",[array
count]);//获取数组有效成员个数
(不包括nil)for
(i = 0; i < [array count]; i++) {//遍历数组(C方法) NSLog(@"%@",[array
objectAtIndex:i]);}NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息)NSArray
* array1 = [[NSArray alloc]initWithArray:array];//创建数组对象
相当于拷贝NSArray
* arry2 = [NSArray arrayWithArray:array];//创建数组对象
相当于拷贝NSEnumerator
* enumer = [array objectEnumerator];//正序枚举器//创建一个枚举器
把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员)//枚举时
会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写id
obj;//第一次循环把数组的第一个元素赋给obj
第二次循环把第二个数组元素赋给objwhile
(obj = [enumer nextObject]) { //遍历数组 NSLog(@"%@",obj);}//快速枚举
第一次循环把array的第一个元素赋给ob 第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改)for(id
ob in array){ NSLog(@"%@",ob);
}//逆序输出数组(创建逆序枚举器
第一次循环把最后一个元素赋给obj )NSEnumerator
* enumer1 = [array reverseObjectEnumerator];while
(obj = [enumer1 nextObject]) { NSLog(@"%@",obj);}if
([obj isKindOfClass:[Dog class]])
//获取类的类型
判是否是指定类的对象 if
([obj isMemberOfClass:[Dog class]])
{ }
-------查找NSArray
* array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one",
nil];NSUInteger
index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标
找不到返回NSNotFoundindex
= [array indexOfObject:@"one"
inRange:NSMakeRange(1, 3)];//在指定范围内查找 if
(index != NSNotFound) { NSLog(@"%ld",index); }----抽取
组成新的数组NSArray
* array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];《数字集合》NSIndexSet这是个数字集合类[NSIndexSet
indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合
NSMutableArray
* array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four",
nil];[array
addObject:@"five"];//在数组尾部插入元素[array
insertObject:@"six"
atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length)[array
removeObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除)[array
removeObject:@"two"
inRange:NSMakeRange(0, 3)];//从指定下标位置开始的指定长度内删除指定元素[array
removeLastObject];//删除最后一个元素[array
removeAllObjects];//删除所有元素 [array
replaceObjectAtIndex:3 withObject:@"ios"];//将指定下标位置元素替换为指定的元素[array
exchangeObjectAtIndex:0 withObjectAtIndex:3];//将指定下标的两个元素进行交换
//@""
空的字符串对象-------分割NSString
* ptr = @"I
am a man";NSArray
* array = [ptr componentsSeparatedByString:@"
"];//将字符串整体作为分割条件
返回值为NSArray不可变数组NSMutableArray
* array1 = [NSMutableArray arrayWithArray:array];//若修改,则将NSArray转化为NSMutableArrayNSArray
* array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",
"]];//以字符串中的字符作为分割条件进行分割《字符集合》NSCharacterSet
这是个字符集合类[NSCharacterSet
characterSetWithCharactersInString:@",
"]//把字符串转化为字符集合-------拼接NSString
* str = [array componentsJoinedByString:@"
"];若分割条件出现在开头或者结尾,则会出现空串@"",如果不需要,则需要转化成NSMutableString对空串进行处理func1:
[array1 removeObject:@""];
//找到空串直接删除func2:
for(id
obj in array1){ if([obj
length] == 0) //空串的长度为0 if([obj
isEqualToString:@""])
//与空串进行比较(字符串是不能进行==比较的,要使用函数)
}
本文详细介绍了Objective-C中数组的基本操作,如初始化、遍历、查找、抽取、插入、删除、替换和交换等,并阐述了如何进行字符串的分割与拼接。
461

被折叠的 条评论
为什么被折叠?



