黑马程序员——Foundation框架——NSArray和NSMutableArray

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

接下来复习的内容是Foundation中使用频率很高的NSArray和NSMutableArray。

这两个类和Java中集合的概念相似。

一、NSArray

NSArray是一个数组性质的类。并且同样与Java类似,只能用来存放对象(且只能是OC对象)。不允许有空值出现。

NSArray是不可更改的,一旦创建完成后,我们无法对其中的项进行添加或删除的操作。NSArray中存放是有序的。

下面是一些NSArray相关的常用操作和方法,包含了具体的代码练习:

pragma mark NSArray
void array1(){
    
    //NSArray只允许保存 OC对象
    
    //创建一个空数组
    NSArray *array = [NSArray array];
    //创建有一个元素的数组
    array = [NSArray arrayWithObject:@"Elors"];
    //创建有多个元素的数组
    array = [NSArray arrayWithObjects:@"Elors", @"Ashi", @"Archive", nil];
    
    
    //查看元素个数
    unsigned long count = array.count;  //3
    //检测是否包含了这个元素
    BOOL flag = [array containsObject:@"Elors"];    //1
    //获取最后一个元素
    [array lastObject]; // Archive
    //获取指定位置的对象元素
    [array objectAtIndex:0];    // Elors

    //使数组内所有对象调用方法
    [array makeObjectsPerformSelector:@selector(description)];
    
    //NSLog(@"%d", flag);
    //NSLog(@"%ld",count);
    //NSLog(@"%@",[array description]);
};

有了数组之后,我们需要面对另外一个使用频率极高的操作了——遍历数组。

下面的代码练习中。我分别使用了四种方式实现了对数组的遍历:

1.普通循环

#pragma mark 遍历数组
void array2(){
    
    NSArray *array = [NSArray arrayWithObjects:
                      @"Elors", @"Ashi", @"Archive", nil];
    for (int i = 0, max = array.count; i < max; i++) {
        NSObject *obj = [array objectAtIndex:i];
        NSLog(@"%@",obj.description);
    }
    

2.for in循环

 
    NSArray *array = [NSArray arrayWithObjects:
                      @"Elors", @"Ashi", @"Archive", nil];
    for (NSObject *obj in array) {
        NSLog(@"%@",obj.description);
    }

3.使用Foundation框架提供的方法

 
    NSArray *array = [NSArray arrayWithObjects:
                      @"Elors", @"Ashi", @"Archive", nil];
    [array enumerateObjectsUsingBlock:
    ^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"%@",[obj description]);
        //*stop = YES;  //终止遍历
    }];

4.使用其迭代器

 NSArray *array = [NSArray arrayWithObjects:
                      @"Elors", @"Ashi", @"Archive", nil];
    //获取数组迭代器
    NSEnumerator *em = [array objectEnumerator];
    //反序迭代器
    em = [array reverseObjectEnumerator];
    id obj = nil;
    while (obj = [em nextObject]) {
        NSLog(@"%@",[obj description]);
    }

以上四中方式中,第三种使用比较方便。



二、NSMutableArray

NSMutableArray同样是一个数组性质的类,它继承于NSArray。它是一个可变的数组。在创建之后可以对数组项进行操作。

由于NSMutableArray继承与NSArray,所以大部分东西都是大同小异的,下面我列举一些基本的操作方法:

void array1(){
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"Elors", nil];
    //添加元素
    [array addObject:@"Ashi"];
    [array addObject:@"AXE"];
    
    //删除最后一个元素
    //[array removeLastObject];
    //删除所有元素
    //[array removeAllObjects];
    
    //替换元素
    [array replaceObjectAtIndex:1 withObject:@"Archive"];

    //排序
    [array sortUsingSelector:@selector(compare:)];
    
    NSLog(@"%@",array.description);
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值