黑马程序员--Obbjective-C-Foundation框架中的NSArray与NSMutableArray的用法-我之整理

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

------------NSArray的创建方式

1),类方法创建

+ (instancetype)array;

+ (instancetype)arrayWithObject:(id)anObject;

+ (instancetype)arrayWithObjects:(id)firstObj, ...;

+ (instancetype)arrayWithArray:(NSArray *)array;

+ (id)arrayWithContentsOfFile:(NSString *)path;

+ (id)arrayWithContentsOfURL:(NSURL *)url;

2),对象方法创建

- (instancetype)initWithObjects:(id)firstObj, ;

- (instancetype)initWithArray:(NSArray *)array;

- (NSArray *)initWithContentsOfFile:(NSString *)path;

- (NSArray *)initWithContentsOfURL:(NSURL *)url;

        //NSArray特点:
        // 一旦创建成功,内容不可改变
        // 只能存放OC对象

        //1)创建一个空数组
        NSArray *arr1 = [NSArray array];

        //2)创建数组,只有一个元素
        NSArray *arr2 = [NSArray arrayWithObject:@"1"];

        //3)创建数组,有多个元素
        // nil 表示数组赋值结束
        // 常见写法
        NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1, nil];
        NSLog(@"arr3 = %@",arr3);
        //4)调用对象方法,创建数组
        //nil Nil NULL  NSNULL
        NSArray *arr4 = [[NSArray alloc] initWithObjects:@"three",[NSNull null],@"four", nil];
        NSLog(@"arr4 = %@",arr4);
        //5)用一个数组可以创建另外一个数组
        NSArray *arr5 = [NSArray arrayWithArray:arr3];
        NSLog(@"arr5 = %@",arr5);

3),常见用法

- (NSUInteger)count; 获取集合元素个数

- (id)objectAtIndex:(NSUInteger)index; 获得index位置的元素

- (BOOL)containsObject:(id)anObject;是否包含某一个元素

- (id)lastObject; 获取最后一个元素

- (id)firstObject; 获取第一个元素

- (NSUInteger)indexOfObject:(id)anObject; 查找anObject元素在数组中的位置

    NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1,@"three", nil];
    NSLog(@"arr3 = %@",arr3);

    //1)获取数组的长度  count获取数组的元素的个数
    NSLog(@"%ld",arr3.count);

    //2)根据下标,获取下标对应的对象
    NSLog(@"%@",[arr3 objectAtIndex:3]);

    //3)返回元素的下标
    NSUInteger loc = [arr3 indexOfObject:@"three"];
    NSLog(@"%ld",loc);

    //4)数组中是否包含了某个元素
    if([arr3 containsObject:@"four"]){

        NSLog(@"包含此元素");

    }else{

        NSLog(@"不包含");
    }
}

-------------NSArray的简写形式

NSArray *arr = @[@"Jack", @"Rose", @"Jim"];

格式:

NSArray *arr = @[数组元素];

NSArray *arr = @[@"1",@"one",@"3",@4,@"ONE"];

NSLog(@"arr = %@",arr);

获取元素格式:

arr[元素角标index];

NSString *str =  arr[0];//获取第零个元素

NSString *str =[arr objectAtIndex:2];

NSLog(@"%@",str);

//2)用简化的方式访问数组元素

str = arr[1];   //C语言形式的数组元素访问

NSLog(@"%@",str);

-------------------NSArray的遍历

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

1),普通for循环,通过下标访问

   for (int i=0; i<arr.count; i++) {

                    NSLog(@"-> %@",arr[i]);

                }

2),增强for循环  (for in)

            for (NSString * str in arr) {

                NSLog(@"---> %@",str);

            }

3),使用block的方式,进行遍历

            //block的三个参数含义:   1,数组元素   2,元素下标  3,是否停止

            [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
               if(idx == 2){

                    *stop = YES;  //停止  // break;

                }else{

                   NSLog(@"idx = %ld,obj = %@",idx,obj);

                }
}];

--------------NSArray 读写文件

1),将数组元素写入文件

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

代码:

   NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

        //写入数据到plist文件中

        if([arr writeToFile:@"/Users/liwei/Desktop/arr.plist" atomically:YES]){

            NSLog(@"写入成功!");

        }

2),从文件读取数组

+ (NSArray *)arrayWithContentsOfFile:(NSString *)path;

代码:

NSArray *readArr = [NSArray arrayWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/arr.xml"];

---------------------NSArray 与字符串

1),把数组元素链接成字符串(NSArray的方法)

- (NSString *)componentsJoinedByString:(NSString *)separator;

这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串

            //定义一个数组

            NSArray *arr = @[@1,@2,@3,@4];
            //1)需求: 把数组中的元素用 "-" 连接起来

            //  [数组 componentsJoinedByString @"分隔符"];

            // 1-2-3-4

            NSString *str = [arr componentsJoinedByString:@"-"];

            NSLog(@"str = %@",str);

2),字符串分割方法(NSString的方法)

 //定义一个数组
        NSArray *arr = @[@1,@2,@3,@4];

        //1)需求: 把数组中的元素用 "-" 连接起来
        //  [数组 componentsJoinedByString @"分隔符"];
        // 1-2-3-4
        NSString *str = [arr componentsJoinedByString:@"-"];
        NSLog(@"str = %@",str);

//2) 给一个字符串,分割成一个数组

        // 400-800-12580   //取得 400    12580    800

        NSString *str2 = @"400-800-12580";

        NSArray *arr2 = [str2 componentsSeparatedByString:@"-"];

        NSLog(@"%@",[arr2 firstObject]);

        NSLog(@"%@",[arr2 lastObject]);

        NSLog(@"%@",arr2[1]);

        str2 = @"400-800-12580#400-888-11200";

        NSArray *arr3 = [str2 componentsSeparatedByString:@"#"];

        NSLog(@"arr3 = %@",arr3);

        //第一个电话的每一部分

        NSArray *arr4 =  [[arr3 firstObject] componentsSeparatedByString:@"-"];

        NSLog(@"arr4 = %@",arr4);
        NSArray *arr5 =  [[arr3 lastObject] componentsSeparatedByString:@"-"];

        NSLog(@"arr5 = %@",arr5);

-----------------------NSMutableArray--------------------

1,NSMutableArray介绍

1),NSMutableArray是NSArray的子类

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

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

2,NSMutableArray基本使用方法

1),创建数组

//创建空数组

            NSMutableArray *arr = [NSMutableArray array];

            //创建数组,并且指定长度为5,此时也是空数组

            NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];

            //创建一个数组,包含两个元素

            NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];

            //调用对象方法创建数组

            NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];

2),添加元素

- (void)addObject:(id)object; 添加一个元素

                [arr1 addObject:@"fengjie"];

               NSLog(@"%p",arr1);

3),插入元素

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

          [arr1 insertObject:@"zbz" atIndex:0];

4),删除元素

- (void)removeAllObjects;//删除全部

- (void)removeLastObject;//删除最后一个

- (void)removeObjectAtIndex:(NSUInteger)index;//删除指定位置

- (void)removeObject:(id)anObject;//删除指定元素

            //根据对象内容删除

            //        [arr1 removeObject:@"zbz"];

            //根据位置删除

            //        [arr1 removeObjectAtIndex:1];

            //全部删除

            [arr1 removeAllObjects];

5),修改元素

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

            [arr3 replaceObjectAtIndex:1 withObject:@"four"];
//把下标为一的元素改为four

            //更加简单地方法

            arr3[1] = @"five";

            NSLog(@"%@",arr3);

6),查找元素

- (BOOL)containsObject:(id)anObject;

//       查看数组arr3中有没有four这个元素
//    BOOL isSearch = [arr3 containsObject:@"four"];

//            NSLog(@"%d",isSearch);

7),交换元素

交换idx1和idx2位置的元素

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;

   NSMutableArray *arr5 =[NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5, nil];

            // 可以交换数组元素
//下标0的元素与下标四的元素交换
            [arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];

            NSLog(@"%@",arr5);

-----------------NSMutableArray 错误用法

NSMutableArray *array = @[@"bob", @"steve", @"john"];//这句话报警告

使用@[@"bob", @"steve", @"john"]这种方式创建的永远是NSArray(不可变数组);

正确用法:

NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"bob", @"steve", @"john"]];

时间: 2024-08-09 19:20:58

黑马程序员--Obbjective-C-Foundation框架中的NSArray与NSMutableArray的用法-我之整理的相关文章

黑马程序员-IOS笔记-Foundation之NSString、NSArray

下面我通过一道编程题:计算文件的代码行数,总结一下NSString.NSArray的使用方法. #import <Foundation/Foundation.h> /* path : 文件的全路径(可能是文件夹.也可能是文件) 返回值 int:代码行数 */ NSUIntegercodeLineCount(NSString *path) { // 1.获得文件管理者 NSFileManager *mgr = [NSFileManagerdefaultManager]; // 2.标记是否为文件

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

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类: http://blog.csdn.net/jiangwei0910410003/article/details/41788223 今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的.

(转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArray类是不可变的,NSMutableArray类是可变的. 下面就先来看一下NSArray类: 一.NSArray类 1 // 2 // main.m 3 // 16_NSArray 4 /

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员--Obbjective-C-Foundation框架中的NSString与NSMutableString的用法-我之整理

-----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Foundation框架 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易. Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时

黑马程序员-Java基础-集合框架-TreeSet、二叉树、泛型

第一讲 TreeSet 1.  概述 TreeSet可以对Set集合中的元素进行排序,按照自然顺序排. 2.  演示代码 输出结果: 总结:TreeSet会对元素进行自然排序,大写排在小写前面. 第二讲  TreeSet存储自定义对象 1. 概述: 将自定义对象存储到TreeSet集合中. 2. 思路: 自定义学生类,并将学生对象存储到TreeSet中,在存储过程中按照年龄排序. 3. 练习:往TreeSet集合中存储自定义对象(学生),并按照学生年龄进行排序 小结: 自定义对象需要重写Comp

黑马程序员——java基础---集合框架

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.集合框架 概念:集合框架是Java中为了方便对集合进行存储.操作而形成的体系.集合是针对对象最常见的一种存储形式. 数组和集合类同是容器,区别在哪里?     相同点:               集合和数组都是容器,都可一存储对象(对象引用).     不同点:               数组长度固定,集合长度可变.               数组可以存储基本数据类型,集合却只能存储

黑马程序员---java基础---集合框架工具类:Collections和Arrays

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------        Collections 一.概述 Collections是对集合框架的一个工具类.它里边的方法都是静态的,不需要创建对象.并未封装特有数据. 在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二

黑马程序员_java的集合框架

java类集的整个体系的组成和关系,以及各个接口,类的文字说明: 集合框架的特征:高性能,对动态数组,链接表,树和散列表的实现是高性能,允许不同类型的类集以相同的方式工作.它不受对象数组长度的限制 Collection:   -|:List  里面的内容是有序的(存入和取出的顺序一致),允许重复的内容,有索引,它扩充了Collection接口,拥有更多的方法      |:LinkedList  内部是链表数据结构,增删的速度快,也是不同步的   -|:Set  不能存放重复的内容,是无序的,