------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、NSArray的基本介绍
1、NSArray是oc 中的数组类,开发过程中建议尽量使用NSArray替代C语言中的数组。
C语言中的数组的弊端:
1)只能存放一种类型的数据;
2)不能方便的动态添加数组元素、不能很方便的动态删除数组元素(长度固定)。
2、NSArray使用注意事项。
1)只能存放OC对子昂,并且是有序的 ;
2)不能存储非OC对象,比如intfloat double char enum struct等;
3)它是不可变的,一旦初始化完毕后,它里面的内容就永远时候固定的,不能删除里面的元素,也不能再往里面添加元素。
二、NSArray创建方式
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个空数组
NSArray *arry1=[NSArray array];
NSLog(@"arry1=%@",arry1);
//创建数组,只有”–“素
NSArray *arry2 = [NSArray arrayWithObject:@"a"];
NSLog(@"arry2=%@",arry2);
//创建数组,多个元素,常见方法
NSArray *arry3 = [NSArray arrayWithObjects:@"2",@1, nil];
NSLog(@"arry3=%@",arry3);
/*调用对象方法,创建数组,NSArray中不呢个存储nil,NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0,0是基本数据类型不能存放到NASArray中。*/
NSArray *arry4=[[NSArray alloc] initWithObjects:@"1",@"2",[NSNull null], nil];
NSLog(@"arry4=%@",arry4);
//用一个数组可以创建另一个数组
NSArray *arry5 = [NSArray arrayWithArray:arry3];
NSLog(@"arry5=%@",arry5);
}
return 0;
}
三、常见用法
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *arry3 = [NSArray arrayWithObjects:@"2",@1, @"langya",nil];
//获取数组长度
NSLog(@"arry3长度为:%ld",arry3.count);
//根据下表获取相应对象
NSLog(@"%@",[arry3 objectAtIndex:2]);
//返回元素得到下标
NSUInteger loc = [arry3 indexOfObject:@"langya"];
NSLog(@"%ld",loc);
//数组中是否包含了某个元素
if([arry3 containsObject:@"2"]){
NSLog(@"包含");
}
else{
NSLog(@"不包含");
}
//用简化的方式,来定义和“问数组
NSArray *arry = @[@"ee",@"rr",@"gg"];
NSLog(@"%@",arry);
//用简化的方式访问数组
NSString *str = arry[2];
NSLog(@"%@",str);
}
return 0;
}
四、遍历方法
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *arr = @[@"one",@"tow",@"three",@"four"];
//1)普通方式,通过下标
for(int i=0;i<arr.count;i++)
{
NSLog(@"普通%@",arr[i]);
}
//2)快速枚举法 for循环的增强形式
for (NSString *str in arr) {
NSLog(@"快速枚举%@",str);
}
//使用block的方式,进行––
//stop:YES 会停止遍历,NO 不停止
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
NSLog(@"idx=%ld,obj=%@",idx,obj);
}];
//遍历到第2各元素,停止
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
if(idx==2){
*stop=YES;
}
else{
NSLog(@"idx=%ld,obj=%@",idx,obj);
}
}];
}
return 0;
}
五、读写文件
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//写文件
NSArray *arry = [NSArray arrayWithObjects:@"one",@"tow",@"three",@"four", nil];
BOOL arrwrite = [arry writeToFile:@"//Users/hongjitong/Desktop/arry.plist" atomically:YES];
if(arrwrite){
NSLog(@"写入成功");
}
//读文件
NSArray *reaarry = [NSArray arrayWithContentsOfFile:@"//Users/hongjitong/Desktop/arry.plist"];
NSLog(@"%@",reaarry);
}
return 0;
}
六、NSArray与字符串
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *arry = @[@1,@2,@3,@4,@5];
//1)把数组中的元素用“-”链接起来1-2-3-4-5
NSString *str = [arry componentsJoinedByString:@"-"];
NSLog(@"%@",str);
//2)给一个字符串,分割成数组400-800-8007
NSString *str1 = @"400-800-8007";
NSArray *arry2 = [str1 componentsSeparatedByString:@"-"];
NSLog(@"%@",[arry2 firstObject]);
NSLog(@"%@",arry2 [1]);
NSLog(@"%@",[arry2 lastObject]);
//如果是400-800-8007#500-600-12570
//先分开为400-800-8007和500-600-12570
NSString *str3 = @"400-800-8007#500-600-12570";
NSArray *arry3 = [str3 componentsSeparatedByString:@"#"];
NSLog(@"%@",arry3);
//继续分割各各元素400-800-8007和500-600-12570
NSArray *arry31 = [arry3[0] componentsSeparatedByString:@"-"];
NSArray *arry32 = [arry3[1] componentsSeparatedByString:@"-"];
//打印
NSLog(@"%@,%@",arry31,arry32);
}
return 0;
}