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"];
  • 相关阅读:
    PAT 甲级 1115 Counting Nodes in a BST (30 分)
    PAT 甲级 1114 Family Property (25 分)
    PAT 甲级 1114 Family Property (25 分)
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
  • 原文地址:https://www.cnblogs.com/developer-wang/p/4508177.html
Copyright © 2011-2022 走看看