NSArray和NSMutableArray使用

NSArray不可变数组

•NSArray特点

•NSArray的创建

•NSArray常用方法

•NSArray简化形式

•NSArray的遍历

•NSArray读写文件

•NSArray与字符串


NSArray特点


1、一旦创建成功,内容不可改变(NSArray是不可变数

组,NSMutableArray是可变数组)

2、只能存放OC对象



NSArray的创建


创建一个空数组:

NSArray*arr1 =[NSArray  array];
创建多元素数组:

NSArray *arr2 =
[NSArrayarrayWithObject:@”one”,@”two”,@”three”,nil
];

用一个数组创建另一个数组:

NSArray *arr3 = [NSArrayarrayWithArray: arr2];

初始化方法:


init返回一个空数组

initWithArray已有数组初始化

initWithContentsOfFile//plist文件加载

initWithContentsOfUrl//从网络地址上获取

initWithObject用一个对象初始化

initWithObjects从多对象初始化


NSArray常用方法


NSArray *arr = 
[NSArrayarrayWithObject:@”one”,@”two”,@”three”,@
”four”,nil];
或者arr =@[@”one”,@”two”,@”three”,@”four”];

获取数组的长度,count获取数组元素的个数

intarrLength =arr.count;
<span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">或者</span>

arrLength = [arr count];
根据下标,获取下标对应的对象

*str = [arr objectAtIndex:2];//打印出来的是three,因为数组元素是从0开始的(0,1,2 . . .)
返回元素的下标:

intnum = [arrindexOfObject:”four”];//返回的下标是3
数组中是否包含了某个元素:

if ([arrcontainsObject:@”four”] == YES){
	NSLog(@”包含此元素”);
}else{
 	NSLog(@”不包含此元素”);
}




NSArray简化形式


用简化的方法定义数组:

NSArray*arr = @[@”one”,@”two”,@”three”];
访问数组元素:

NSString *str = [arr objectAtIndex:1];//返回two

用简化的方法访问数组元素:

NSString *str =arr[1];//返回two



NSArray的遍历


定义一个数组:

NSArray*arr = @[@”one”,@”two”,@”three”,@”four”];

对数组进行遍历(两种方法):

for (inti = 0;i < arr.count;i++){
  NSLog(@”%@”,arr[i ]);
}

或者

for (NSString *str  in arr){
  NSLog(@”%@”,str);
}

NSArray读写文件


写入
读取

写入

NSArray *arr = @[@”one”,@”two”,@”three”];

arr中的内容写入到文件中,.plist是一种特殊的文件格式:

BOOLisWrite = 
[arrwriteToFile:@”/Users/xingming/Desktop/arr.xml” 
atomically: YES];
if (isWrite){
  //判断是否写入成功,如果isWrite是真,则执行此方法
  NSLog(@”success!”);
}

读取

NSArray *readArr = [NSArrayarrayWithContentsOfFile:@”/Users/xingming/Desktop/arr.xml”];
NSLog(@”%@”,readArr);//打印



NSArray与字符串


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

把数组拼接成字符串

定义一个数组:

NSArray*arr =@[@”1”,@”2”,@”3”,@”4”];
把数组arr中的元素用“-”连接起来,变成1-2-3-4

NSString*str = [arrcomponentsJoinedByString: @”-”];
NSLog(@”str = %@”,str);//打印结果:str = 1-2-3-4
把字符串拆分成数组

NSString*str = [arrcomponentsJoinedByString: @”-”];
NSLog(@”str = %@”,str);//打印结果:str = 1-2-3-4



NSMutableArray可变数组

为数组分配内存空间
添加对象
向尾部添加数组对象
删除数组元素
替换某所引值对应的对象
数组迭代遍历



为数组分配内存空间

NSMutableArray *array = [NSMutabeArray arrayWithCapacity:10];

初始化可变数组对象的长度,如果后面代码继续添加数组超过长度10以后NSMutableArray的长度会自动扩充10自己可以设置的颗粒度。



添加对象


方法:- (void)addObject: (id)anObject;

例子:

NSMutableArray*array = [NSMutableArrayarrayWithCapacity:10];
[arrayaddObject:@“One”];
[arrayaddObject:@“Two”];
NSLog(@“array:%@”,array);
打印:
 array:(
   One,
   Two
)


向尾部添加数组对象


方法:addObjectsFromArray:

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


删除数组元素


[arrayremoveObject:(id)] :删除数组中指定元素,根据对象isEqual消息判断。

[arrayremoveObjectIdenticalTo:(id)] :删除数组中指定元素,根据对象的地址判断

[arrayremoveObjectIdenticalTo:(id)inRange:(NSRange)] :在指定范围内删除指定的元素。

[arrayremoveObjectAtIndex:(NSUInteger)]:删除数组中指定脚标索引的数据。

[arrayremoveObjectsInArray:(NSArray *)] :删除一个数组的元素。

[arrayremoveAllObjects]:删除数组中所有的元素(清空数组)

说明:array是可变数组


替换某所引值对应的对象


方法:replaceObjectAtIndex:withObject:

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


数组迭代遍历

NSObject *obj = [[NSObjectalloc]init];
NSMutableArray*muArray = [NSMutableArray arrayWithCapacity:6];
[muArrayaddObject:@"对象1"];
[muArrayaddObject:@"对象2"];
[muArrayaddObject:obj];
NSEnumerator*enmuerator = [muArrayobjectEnumerator];
idobject;
while(object = [enmueratornextObject]) {
 NSLog(@"数组中的对象:%@",object);
}
打印:数组中的对象:对象1
  数组中的对象:对象2
  数组中的对象:<NSObject: 0x7a15d2d0>








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值