Objective-C中的NSArray和NSMutableArray

一、NSArray不可变数组

NSArray是一个Cocoa类,用来储存对象的有序列表。可以用来存放任意类型的对象,比如NSString、NSDictionary或者其他你自己创建的对象。

我们可以通过多种方式去操作NSArray对象,比如让某个对象的实例变量指向这个数组,将该数组当做参数传给某一个方法或者函数,获取数组中对象个数,提取某一个对象、查找数组中的对象,遍历数组……


NSArray类有两个限制:

①它只能存储Objective-C对象,而不能存储C语言中的基础数据类型,比如int、float、enum、struct和NSArray中的随机指针。

②不能在NSArray中存放nil(对象的零值或者NULL值)。


创建NSArray的方法:

//通过类方法arrayWithObjects:创建,nil代表结束。
NSArray *array = [NSArray arrayWithObjects:@"red",@"yellow",@"blue",nil];
//使用数组字面量格式创建数组
NSArray *array2 = @[@"red",@"yellow",@"blue"];


Array的基本用法:

#import 
   
   
    
    

int main(int argc, char *argv[]) {
	@autoreleasepool {
		NSObject *obj = [[NSObject alloc]init];
		NSArray *array = @[@"red",@"yellow",@"blue",obj];
		
		//[array count]:数组的长度
		NSLog(@"array Count:%lu",[array count]);
		//遍历数组
		for (NSObject *object in array) {
			NSLog(@"array数组的对象:%@", object);
		}
		//[array objectAtIndex:2]:传入数组脚标的id获取数组对象
		NSLog(@"Index 2:%@", [array objectAtIndex:2]);
	}
		
	return 0;
}
   
   

输出:

2017-05-05 02:01:37.363 test.out[7883:5345136] array Count:4

2017-05-05 02:01:37.364 test.out[7883:5345136] array数组的对象:red

2017-05-05 02:01:37.364 test.out[7883:5345136] array数组的对象:yellow

2017-05-05 02:01:37.364 test.out[7883:5345136] array数组的对象:blue

2017-05-05 02:01:37.364 test.out[7883:5345136] array数组的对象:<NSObject: 0x7fb144401e70>

2017-05-05 02:01:37.364 test.out[7883:5345136] Index 2:blue


使用-componentsSeparatedByString:切分数组

使用componentJoinByString:合并数组并创建字符串

NSString *string = @"red:yellow:blue";

//将string分成一个有三个对象的数组,对象分别为red、yellow、blue 

NSArray *array = [string componentsSeparatedByString:@":"];

//将array合并成一个string,创建一个内容为red||yellow||blue的字符串

string = [array componentsJoinedByString:@"||"];


二、可变数组

NSMutableArray是可变数组,可以随意添加或者删除数组中的对象。


创建NSMutable的方法:+(id) arrayWithCapacity: (NSUInteger) numItems;

这里数组容量只是一个参考值。容量数值之所以存在,是为了让Cocoa能够对代码进行一些优化。Cocoa既不会将对象预写入数组中,也不会用该容量去限制数组的大小。

NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];


在数组末尾添加对象:-(void) addObject:(id)anObject;

删除特定索引处的对象:-(void) removeObjectAtIndex: (NSUInteger) index;


举例:

#import 
    
    
     
     

int main(int argc, char *argv[]) {
	@autoreleasepool {
			NSMutableArray *array1 = [NSMutableArray arrayWithCapacity:20];
			array1 = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil];
			
			//在数组末尾添加对象
			[array1 addObject:@"Four"];
			NSLog(@"array:%@",array1);
			
			//输出特定索引处的对象
			[array1 removeObjectAtIndex:1];
			NSLog(@"array:%@",array1);
	}
	return 0;
}
    
    

输出:

2017-05-05 02:10:21.197 test.out[8141:5349877] array:(

    One,

    Two,

    Three,

    Four

)

2017-05-05 02:10:21.197 test.out[8141:5349877] array:(

    One,

    Three,

    Four

)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值