【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray

原创 2015年11月18日 15:06:21

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

一、NSArray的介绍和基本使用

1)什么是NSArray?

NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组 C语言中数组的弊端

int array[4] = {10, 89, 27, 76};

只能存放一种类型的数据.(类型必须一致) 不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)

2)NSArray的使用注意

只能存放任意OC对象, 并且是有顺序的

不能存储非OC对象, 比如int\float\double\char\enum\struct等

它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不 能再往里面添加元素


<span style="font-size:14px;">//
//  main.m
//  NSArray的介绍和使用
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
      
        //1.创建一个空数组
        NSArray *arr1 = [NSArray array];
        //2.创建数组,只有一个元素
        NSArray *arr2 = [NSArray arrayWithObject:@"1"];
        //3.创建数组,有多个元素
        NSArray *arr3 = [NSArray arrayWithObjects:@"1",@"2", nil];
        //4.调用对象方法。创建数组
        NSArray *arr4 =[[NSArray alloc] initWithObjects:@1,[NSNull null],@3, nil];
        //5.用一个数组创建另外一个数组
        NSArray *arr5 = [NSArray arrayWithArray:arr1];
    }
    return 0;
}
</span>

二、NSArray的常用用法


<span style="font-size:14px;">//
//  main.m
//  NSArray的常用用法
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义一个数组
        NSArray *arr = [NSArray arrayWithObjects:@"one",@"two",@3,@"4",nil];
        
        //获取数组的长度
        NSUInteger count = arr.count;
        //根据下标获取对应的对象
        NSLog(@"%@",[arr objectAtIndex:3]);
        //返回元素的下标
        NSLog(@"%ld",[arr indexOfObject:@"4"]);
        //数组是否包含某一个元素
        BOOL c = [arr containsObject:@3];
        NSLog(@"%d",c);
        //用简化的方式来定义数组
        NSArray *arr2 = @[@"1",@"2",@3,@"four"];
        //用简化的方式访问数组元素
        NSLog(@"%@",arr2[2]);
        
    }
    return 0;
}
</span>

三、NSArray的遍历


<span style="font-size:14px;">//
//  main.m
//  NSArray的遍历
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义一个数组
        NSArray *arr = @[@"one",@"two",@"three",@"four"];
        //方法1遍历
        for (int i=0; i<arr.count; i++) {
            NSLog(@"%@",arr[i]);
        }
        
        //方法2  快速枚举
        for (NSString *str in arr) {
            NSLog(@"%@",str);
        }
        
        //方法三 用block
        [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            if (idx==3) {
                *stop = YES;  //YES的时候停止
            }else{
                NSLog(@"%ld,%@",idx,obj);
            }
        }];
        
    }
    return 0;
}
</span>

四、NSArray读写文件


<span style="font-size:14px;">//
//  main.m
//  NSArray读写文件
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义一个数组
        NSArray *arr = [NSArray arrayWithObjects:@"one",@"zbz",@"cgx",@"sb",nil];
        
        //把数组写入到文件中
        BOOL isWrite = [arr writeToFile:@"/Users/Brisinga/Desktop/a.plist" atomically:YES];
        
        //读取文件信息到数组
        NSArray *arr2 = [NSArray arrayWithContentsOfFile:@"/Users/Brisinga/Desktop/a.plist"];
        NSLog(@"%@",arr2);
    }
    return 0;
}
</span>

五、NSArray与字符串


1.把数组元素连城一个字符串

2.把一个字符串分割成多个元素并放在同一个数组中

<span style="font-size:14px;">//
//  main.m
//  NSArray与字符串
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义一个数组
        NSArray *arr = @[@1,@2,@3,@4];
        //需求 把数组中的元素用“-”连接起来:1-2-3-4
        NSString *str = [arr componentsJoinedByString:@"-"];
        NSLog(@"%@",str);
        
        //2把一个字符串分割成数组
        arr = [str componentsSeparatedByString:@"-"];
        NSLog(@"%@",arr[2]);
        NSLog(@"%@",[arr firstObject]);
        NSLog(@"%@",[arr lastObject]);
        
        //应用分割400-800-12580#400-808-11200
        NSString *str1 = @"400-800-12580#400-808-11200";
        NSArray *arr1 = [str1 componentsSeparatedByString:@"#"];
        NSArray *arr2 = [[arr1 firstObject] componentsSeparatedByString:@"-"];
        NSLog(@"%@",arr2);
        NSArray *arr3 = [arr1[1] componentsSeparatedByString:@"-"];
        NSLog(@"%@",arr3);
        
    }
    return 0;
}
</span>

六、NSMutableArray的基本使用

NSMutableArray是NSArray的子类

NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素

NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素


<span style="font-size:14px;">//
//  main.m
//  NSMutableArray的基本使用
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //1)创建数组
            //i.空数组
        NSMutableArray *arr1 = [NSMutableArray array];
            //ii.创建的时候初始化一个元素
        NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@1];
            //iii.创建的时候出事话多个元素
        NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@1,@2,@3, nil];
            ///iv.创建一个数组并且制定长度
        NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
        //2) 添加元素
        [arr1 addObject:@1];
        [arr1 insertObject:@2 atIndex:1];
        //3) 删除元素
        [arr1 removeObject:@2];  //根据对象删除
        [arr1 removeObjectAtIndex:0]; //根据下标删除
        [arr1 removeAllObjects]; //全部删除
        NSLog(@"%@",arr1);
        //4) 修改元素
        [arr3 replaceObjectAtIndex:1 withObject:@5];
        arr3[2] = @6;
        //5) 查找元素
        BOOL isSearch = [arr3 containsObject:@6];
        //交换元素
        [arr3 exchangeObjectAtIndex:2 withObjectAtIndex:0];
        
    }
    return 0;
}
</span>



版权声明:本文为博主原创文章,未经博主允许不得转载。

OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类:http://blog.csdn.net/jiangwei0910410003/article...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年12月08日 22:10
  • 18608

iOS开发之OC篇(3)—— NSArray、NSMutableArray

版本 Xcode 8.2.1 一、不可变数组NSArray    二、可变数组NSMutableArray
  • u012078168
  • u012078168
  • 2017年02月09日 20:27
  • 773

高效的把NSMutableArray变成NSArray

高效的把NSMutableArray变成NSArray 我们在方法内部可能会用NSMutableArray,但是返回的时候希望其他人不去改我们的Array...
  • uxyheaven
  • uxyheaven
  • 2015年01月07日 01:02
  • 5673

为什么NSMutableArray必须用strong,而NSArray必须用copy?

1.NSMutableArray: @property (nonatomic, copy) NSMutableArray *mArray;//等同于 - (void)setMArray:(NSM...
  • ioswl
  • ioswl
  • 2017年03月06日 19:15
  • 1026

NSArray和NSMutableArray整理与总结

NSArray和NSMutableArray整理与总结
  • Story51314
  • Story51314
  • 2016年04月18日 15:50
  • 1531

NSMutableArray 合并,去重

在项目中,遇到要合并的数组,或者是去重的时候,containsObject这个方法是很好用的。        NSArray *array = [[NSArray alloc] initWith...
  • loongprotable
  • loongprotable
  • 2013年10月31日 16:49
  • 2674

Objective-C中NSArray和NSMutableArray的基本用法

Objective-C中NSArray和NSMutableArray的基本用法
  • centralperk
  • centralperk
  • 2013年08月25日 17:59
  • 38241

oc 知识总结二(NSArray、NSMutableArray)

注:1、数组:是一组有序的对象的集合,通过索引下标获取到数组中的各个元素。        2、数组中不可以存放基本数据类型,只能存放对象。如果需要将剧本数据类型放入数组中,需要通过NSNumber来放...
  • sunshine_leaf
  • sunshine_leaf
  • 2015年12月28日 17:32
  • 741

NSArray和NSMutableArray使用

NSArray不可变数组 •NSArray特点 •NSArray的创建 •NSArray常用方法 •NSArray简化形式 •NSArray的遍历 •NSArray读写文件 •NSArray与字符串...
  • zyfmeng
  • zyfmeng
  • 2016年07月28日 13:28
  • 357

【黑马程序员】【Foundation框架】数组NSArray和NSMutableArray

1、NSArray的用法示例 int main(int argc, const char * argv[]) { 2    @autoreleasepool { 3 ...
  • u010419580
  • u010419580
  • 2015年10月13日 22:01
  • 117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray
举报原因:
原因补充:

(最多只允许输入30个字)