Objective-C的Foundation框架——集合NSArray

0x01 NSArray

 

NSArray是一个Cocoa类,用来存储对象的有序列表。

 

NSArray可存储的对象

在NSArray中可以放入任意类型的对象:NSString、Car、Shape、Tire或者其他想要存储的对象,甚至可以是其他数组或字典对象。

 

NSArray类的限制

NSArray类有三个限制:

1、一旦创建了一个包含特定数量对象的数组,它就不能增加或删除任何元素。但数组中的对象可以改变;

2、只能存储Objective-C的对象,不能存储原始C语言的基础数据类型(int、float、enum、struct)和NSArray中的随机指针;

3、不能在NSArray中存储nil(对象的零值或NULL值)。

 

NSArray的创建

可以通过类方法arrayWithObjects:创建一个新的NSArray。发送一个以逗号分隔的对象列表,在列表结尾处添加nil代表列表结束:

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];

也可以用数组字面量格式来创建一个数组,此时不必在列表结尾添加nil

NSArray *array2 = @[@"one", @"two", @"three"];

 

NSArray可用的对象方法

count

count:方法可以获得一个NSArray所包含的对象个数。

- (NSUInteger)count;

 

objectAtIndex

objectAtIndex:可以获得一个NSArray特定索引处的对象。

也可以通过数组字面量来访问NSArray,和C语言中访问数组项的语法类似。

- (id)objectAtIndex:(NSUInteger)index;
id *myObject = array1[1];

 

数组内容的输出

结合计数和取值的方法, 可以输出NSArray中的内容,当然也可以用数组字面量的语法来写代码:

for (NSInteger i = 0; i < [array count]; i++)
{
     NSLog (@"index %d has %@.",i, [array objectAtIndex:i]);
     //Equal to : NSLog (@"index %d has %@.",i, array[i]);
}

##
#Output:
#index 0 has one.
#index 1 has two.
#index 2 has three.
##

 

数组的拆分与合并方法

componentsSeparatedByString

使用componentsSeparatedByString:方法可以切分在指定位置切分NSString并分段存入NSArray。

NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString: @":"];

 

componentsJoinedByString

使用componentsJoinedByString:方法可以将NSArray中的元素合并成NSString。

string = [chunks componentsJoinedByString: @" :- ) "];

 

0x02 可变数组

arrayWithCapacity

NSMutableArray通过类方法arrayWithCapacity来创建新的可变数组。参数numItems是数组容量,这个容量只是给编译器一个建议值,Cocoa不会用该数值来限制数组的大小:

+ (id) arrayWithCapacity: (NSUInteger) numItems;

//示例
NSMutableArray *array = [NSMutableArray arrayWithCapacity: 17];

 

addObject

使用addObject:方法可以在可变数组末尾添加对象。

- (void) addObject: (id) anObject;

//示例
for (NSInteger i = 0; i < 4; i++)
{
 Tire *tire = [Tire new];
 [array addObject: tire];
}

 

1、NSArray的索引是从0开始的,这个和C语言数组是一样的。

2、没有数组字面量语法可以用来创建NSMutableArray对象!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值