猿起码农之亮眼

NSArray和NSMutableArray使用

2016-08-19  本文已影响464人  飞天猪Pony

NSArray不可变数组

1、NSArray特点

1、一旦创建成功,内容不可改变(NSArray是不可变数组,NSMutableArray是可变数组)
2、只能存放OC对象

2、NSArray的创建

创建一个空数组:
NSArray*arr1 =[NSArray  array]; 
创建多元素数组:
NSArray *arr2 =  [NSArray arrayWithObject:@”one”,@”two”,@”three”,nil];  
用一个数组创建另一个数组:
NSArray *arr3 = [NSArray arrayWithArray: arr2];  

初始化方法:
init返回一个空数组
initWithArray从已有数组初始化
initWithContentsOfFile//从plist文件加载
initWithContentsOfUrl//从网络地址上获取
initWithObject用一个对象初始化
initWithObjects从多对象初始化

3、NSArray常用方法

NSArray *arr = [NSArray arrayWithObject:@”one”,@”two”,@”three”,@”four”,nil];  
或者arr =@[@”one”,@”two”,@”three”,@”four”]; 
获取数组的长度,count获取数组元素的个数
int arrLength = arr.count; 
arrLength = [arr count];  
根据下标,获取下标对应的对象
NSString *str = [arr objectAtIndex:2];//打印出来的是three,因为数组元素是从0开始的(0,1,2 . . .)  
返回元素的下标:
int intnum = [arr indexOfObject:”four”];//返回的下标是3 
数组中是否包含了某个元素:
if ([arrcontainsObject:@”four”] == YES){  
    NSLog(@”包含此元素”);  
}else{  
    NSLog(@”不包含此元素”);  
} 

4、NSArray简化形式

用简化的方法定义数组:
NSArray*arr = @[@”one”,@”two”,@”three”];  
访问数组元素:
NSString *str = [arr objectAtIndex:1];//返回two  
用简化的方法访问数组元素:
NSString *str =arr[1];//返回two  

5、NSArray的遍历

定义一个数组:
NSArray*arr = @[@”one”,@”two”,@”three”,@”four”];  
对数组进行遍历(两种方法):
for (int i = 0;i < arr.count;i++){  
    NSLog(@”%@”,arr[i]);  
}  
或者
for (NSString *str  in arr){  
    NSLog(@”%@”,str);  
}  

6、NSArray读写文件

写入
NSArray *arr = @[@”one”,@”two”,@”three”];  
把arr中的内容写入到文件中,.plist是一种特殊的文件格式:
BOOL isWrite = [arr writeToFile:@”/Users/xingming/Desktop/arr.xml” atomically: YES];  
if (isWrite){  
    //判断是否写入成功,如果isWrite是真,则执行此方法  
    NSLog(@”success!”);  
}  
读取
NSArray *readArr = [NSArray arrayWithContentsOfFile:@”/Users/xingming/Desktop/arr.xml”];  
NSLog(@”%@”,readArr);//打印  

7、NSArray与字符串

①把数组拼接成字符串
②把字符串拆分成数组

把数组拼接成字符串
定义一个数组:
NSArray*arr =@[@”1”,@”2”,@”3”,@”4”];  
把数组arr中的元素用“-”连接起来,变成1-2-3-4
NSString*str = [arr componentsJoinedByString: @”-”];  
NSLog(@”str = %@”,str);//打印结果:str = 1-2-3-4  
把字符串拆分成数组
NSArray *aArray = [str componentsSeparatedByString:@"-"];;  
NSLog(@”aArray= %@”,aArray);//打印 

NSMutableArray可变数组

1、为数组分配内存空间

为数组分配内存空间
NSMutableArray *array = [NSMutabeArray arrayWithCapacity:10];  
//初始化可变数组对象的长度,如果后面代码继续添加数组超过长度10以后NSMutableArray的长度会自动扩充,10是自己可以设置的颗粒度。

2、添加对象

添加对象
方法:- (void)addObject: (id)anObject;
例子:
NSMutableArray*array = [NSMutableArray arrayWithCapacity:10];  
[array addObject:@“One”];  
[array addObject:@“Two”];  
NSLog(@“array:%@”,array);  
打印:  
array:(  
   One,  
   Two  
)  

3、向尾部添加数组对象

方法:addObjectsFromArray:
NSArray *array = @[@"One",@"Two",@"Three"];  
NSMutableArray*mutArr = [NSMutableArray arrayWithArray:array];  
NSLog(@“mutArr=%@”,mutArr);  
打印:  
 mutArr= (  
   One,  
   Two,  
    Three  
)  

4、删除数组元素

[array removeObject:(id)] :删除数组中指定元素,根据对象isEqual消息判断。
[array removeObjectIdenticalTo:(id)] :删除数组中指定元素,根据对象的地址判断
[array removeObjectIdenticalTo:(id) inRange:(NSRange)] :在指定范围内删除指定的元素。
[array removeObjectAtIndex:(NSUInteger)]:删除数组中指定脚标索引的数据。
[array removeObjectsInArray:(NSArray *)] :删除一个数组的元素。
[array removeAllObjects]:删除数组中所有的元素(清空数组)
说明:array是可变数组

5、替换某所引值对应的对象

方法:replaceObjectAtIndex:withObject:
NSMutableArray *mutArr = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three", nil];  
[mutArr replaceObjectAtIndex:2 withObject:@"Four"];  
NSLog(@"mutArr= %@",mutArr);  
打印:  
 mutArr= (  
   One,  
   Two,  
   Four  
) 

6、数组迭代遍历

NSObject *obj = [[NSObject alloc] init];  
NSMutableArray*muArray = [NSMutableArray arrayWithCapacity:6];  
[muArray addObject:@"对象1"];  
[muArray addObject:@"对象2"];  
[muArray addObject:obj];  
NSEnumerator*enmuerator = [muArray objectEnumerator];  
id object;  
while(object = [enmueratornext Object]) {  
   NSLog(@"数组中的对象:%@",object);  
}  
打印: 数组中的对象:对象1  
      数组中的对象:对象2  
      数组中的对象:<NSObject: 0x7a15d2d0>  
上一篇下一篇

猜你喜欢

热点阅读