Foundation框架 —— NSArray

----------------------  ASP.Net+Unity开发 .Net培训 、期待与您交流! ----------------------

数组,比如C语言数组:int ages[10] = {1, 5, 19, 29, 33};
再如:Person *p = [[Person alloc] init]; 
   Person *perso[5] = {p, [[Person alloc] init]};

C语言数组,只能存放同一类型的数据,那如何存放不同类型的数据呢?这里就需要用到OC数组:NSArray了。

OC数组是不能存放nil值,OC数组只能存放OC对象,不能存放非OC对象类型,比如:int、struct、enum等。

那OC数组又是怎样创建的呢?
NSArray *array = [NSArray arrayWithObject:@"jack"];
NSArray *array2 = [NSArray arrayWithObjects:@"jack", @"rose", nil];

这样的创建,工作量不说,大量降低了我们工作效率。

NSArray *array3 = @[@"jack", @"rose", @"212132"]; // 快速创建数组

数组有了,如何知道数组包含的元素个数?如果我们想查看数组,又如何操作呢?

NSLog(@"%ld", array3.count); // 数组元素个数
NSLog(@"%@", array3[0]); // 访问数组0上面的元素:@“jack”

这里可以看出OC数组的访问和C数组的访问,很类似。

有个数组:
Person *p = [[Person alloc] init];
NSArray *array = @[p, @"rose", @"jack"];

如何遍历这个数组呢?这让我们想到C语言中的for循环。
for (int i = 0; i<array.count; i++)
{
NSLog(@"%@", array[i]);
}

那如果我遍历到某个元素之后,我不想遍历了,我们如何停下来?这可不象我们跑步,不想跑了就可以停下来的。

这里我们就需要用到block了。

[array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop)
{
NSLog(@"%ld - %@", idx, obj);
if (idx == 1)
{
*stop = YES;
}
}];

每遍历到一个元素,就会调用一次block,并且将当前元素和索引位置当做参数传给block。

那天我突然想往数组中添加某元素,怎么办?NSArray,是不可变数组,也就是不能够添加或删改。这里就需要用到NSMutableArray:可变数组。
NSMutableArray *array = [NAMutableArray arrayWithObjects:@"rose", @"jim", nil];

添加元素:
[array addObject:@"jack"];

删除元素:
[array removeObject:@"rose"];

还有一个途径:
[array removeObjectAtIndex:1]; // 删除1位置上的元素:"jim"

@[]; 是创建数组的意思。但是它只能创建不可变数组:NSArray。





---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值