zoukankan      html  css  js  c++  java
  • OC中Foundation框架之NSArray、NSMutableArray

    NSArray概述

    1 NSArray是OC中的数组类

    NSArray特点

    1 1)只能存放任意OC对象,并且是有顺序的
    2 2)不能存放非OC对象,比如int/float/double/char/enum/struct等
    3 3)它是不可变的,一但初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再玩里面添加元素

    NSArray的创建方式

    1 +(instancetype)array;
    2 +(instancetype)arrayWithObject:(id)anObject;
    3 +(instancetype)arrayWithObjects:(id)firstObj,...;
    4 +(instancetype)arrayWithArray:(NSArray *)array;
    5 +(id)arrayWithContentsOfFile:(NSString *)path;//读取一个xml文件
    6 +(id)arrayWithContentsOfURL:(NSURL*) url;//读取一个xml文件

    NSArray使用注意

    1 1)NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式
    2 2)NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil时数组元素结束的标记). nil就是 0 ,0也是基本数据类型,不能存放到NSArray中
    3 3)由于NSArray创建以后就是不可变的,所以  NSArray * array =[NSArray array];//这样的数组永远是空的,不可能向其中增加值.(不可变性)

    NSArray的常见用法

     1 获取集合元素个数
     2 -(NSUInteger)count;
     3 获取index位置的元素
     4 -(id) objectAtIndex:(NSUInteger) index;
     5 判断是否包含某个元素
     6 -(BOOL)containsObject:(id)anObject;
     7 返回最后一个元素
     8 -(id)lastObject;
     9 返回第一个元素
    10 -(id)firstObject;
    11 查找anObject元素在数组中的位置(如果找不到,返回-1) NSNotFound
    12 -(NSUInteger)indexOfObject:(id)anObject;
    13 在range范围内查找anObject元素在数组中的位置
    14 -(NSUInteger)indexOfObject:(id) anObject inRange:(NSRange) range;

    NSArray的简写形式

     1 数组的创建
     2     [NSArray arrayWithObjects:@"Jack",@"Rose",@"Jim",nil]
     3 简写后:
     4         @[@"Jack",@"Rose",@"Jim"];
     5 
     6 
     7 数组元素的访问
     8         [array objectAtIndex:0];
     9 现在
    10         array[0];

    NSArray的遍历

    1,普通for循环
        for(int i=0;i<arr.conten;i++){
            NSLog(@"%@",arr[i];
        }
    2.增强for循环
        for(NSString *str:arr){
             NSLog(@"%@",str);
        }
    3.block遍历
        id obj  数组的元素的值
        NSUInteger idx 索引index,获取数组元素的下标
        BOOL *stop YES 表示要停止 
        [arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
          NSLog(@"索引:%ld---->元素值:%@ ",idx,obj);
    }]

    NSArray读写文件

    1 1.NSArray数据写入到文件中
    2     //创建一个数组
    3     NSArray *arr =[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
    4     //写入数据到文件中
    5     if([arr writeToFile:@"/Users/liwei/Desktop/arr.plit" atomically:YES]){  NSLog(@"写入成功!"); }
    6 
    7 2.从文件中读取数据,并且放到数组中
    8     NSArray *arr2 =[NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.plist"];
    9     NSLog(@"arrange=%@",arr2);

    NSArray与字符串

    1 用separator作拼接符将数组元素拼接成一个字符串
    2 -(NSString *)componentsJoinedByString:(NSString *)separator;
    3 字符串分隔
    4 NSString *str=@"400-588-1688";
    5 NSArray *arr =[str componentsSeparatedByString:@"-"];
    6 NSLog(@"%@",arr);

    NSMutableArray

    1 概述:
    2     NSmutableArray是NSArray得子类,
    3     NSArray是不可变的,而NSMutableArray是可变的,随时可以往里面添加、更改、删除元素
    4     //创建一个空的NSMutableArray
    5     NSMutableArray *array = [NSMutableArray array];

    NSMutableArray的基本使用

     1 //创建空数组
     2 NSMutableArray *arr = [NSMutableArray array];
     3 //创建一个指定长度为5的空数组
     4 NSMutableArray *arrange = [[NSMutableArray alloc]initWithCapacity:5];
     5 //创建一个数组,包含两个元素
     6 NSMutableArray *arr3 =[NSMutableArray arrayWithObjects:@"1",@"2",nil];
     7 //调用对象方法创建数组
     8 NSMutableArray *array=[[NSMutableArray alloc] initWithObjects:@"1",@"2",nil];
     9 
    10 
      

    NSMutable的方法

     1 添加一个元素
     2 -(void) addObject:(id)object;
     3 添加otherArray的全部元素到当前数组
     4 -(void) addjectsFromArdObray:(NSArray *)array;
     5 在index位置插入一个元素
     6 -(void)insertObject:(id) anObject atIndex:(NSUInteger) index;
     7 删除最后一个元素
     8 -(void)removeLastObject;
     9 删除所有的元素
    10 -(void)removeAllObjects;
    11 删除Index位置的元素
    12 -(void)removeObjectAtIndex:(NSUInteger)index;
    13 删除特定的元素
    14 -(void)removeObject:(id)object;
    15 删除range范围内的所有元素
    16 -(void)removeObjectsInRange:(NSRange)range;
    17 用anObject替换index位置对应的元素
    18 -(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
    19 交换idx1 和 idx2位置的元素
    20 -(void)exchangeObjectAtIndex:(NSUInteger)idxl withObjectAtIndex:(NSUInteger)idxisdx;

    NSMutableArray 错误用法

    1 NSMutableArray *array = @[@"bob",@"steve",@"john"];
    2 [array addObject:@"Peter"];//错误,使用@[@"bob",@"steve",@"john"]这种方式创建的永远是NSArray(不可变数组);
    3 
    4 正确的做法
    5 NSMutableArray *array =[NSMutableArray arrayWithArray:@[@"bob",@"steve",@"john"]];
    6 [array addObject:@"Peter"];
  • 相关阅读:
    分治算法的时间复杂度研究
    c函数调用过程原理及函数栈帧分析
    Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
    Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
    Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
    Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
    Java 蓝桥杯 算法训练(VIP) 最大体积
    Java 蓝桥杯 算法训练(VIP) 最大体积
    Java 蓝桥杯 算法训练(VIP) 最大体积
    Java 蓝桥杯 算法训练(VIP) 最大体积
  • 原文地址:https://www.cnblogs.com/developer-wang/p/4508177.html
Copyright © 2011-2022 走看看