美文网首页iOS Developer
NSArray的基本使用

NSArray的基本使用

作者: Coder007 | 来源:发表于2016-12-15 14:50 被阅读83次
    NSArray基本概念
    • 只能存放任意OC对象,并且是有序的
    • 不能存储非OC对象,比如int\float\double\char\enum\struct等
    • 是不可变的,一旦初始化完毕,里面的内容固定不变,不可删除里面的元素,也不能增加元素
    NSArray创建方式
    • 通常我们创建NSArray的时候,我们使用类方法进行创建
    + (instancetype)array;
    + (instancetype)arrayWithObject:(ObjectType)anObject;
    + (instancetype)arrayWithObjects:(ObjectType)firstObj, ...;
    + (instancetype)arrayWithArray:(NSArray<ObjectType> *)array;
    + (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;
    + (nullable NSArray<ObjectType> *)arrayWithContentsOfURL:(NSURL *)url;
    
    NSArray的注意事项
    • NSArray中不能存储nil,因为NSArray认为nil是数组的结束标记
    NSArray的常用方法
    NSArray *arr = @[@"123",@"456",@"6777"];
    
    // 获取数组元素个数
    NSUInteger count = [arr count];
    
    // 获取index位置的元素
    NSString *str1 = [arr objectAtIndex:0];
    
    // 是否包含某一个元素
    BOOL isContain = [arr containsObject:@"123"];
    
    // 返回最后一个元素
    NSString *str2 = [arr lastObject];
    
    // 返回第一个元素
    NSString *str3 = [arr firstObject];
    
    // 查找元素在数组中得位置,如果找不到返回-1
    int index = [arr indexOfObject:@"111"];
    
    快速创建方式
    NSArray *arr = @[@"123", @"qwe"];
    
    遍历数组
    NSArray *arr = @[@"3",@"1",@"4",@"10",@"5"];
    // 下标遍历
    for (int i = 0; i < arr.count; i++) {
        NSLog(@"%@",arr[i]);
    }
    
    // 快速遍历
    for (NSString *str in arr) {
        NSLog(@"%@",str);
    }
    
    // 使用block遍历
    // stop用来控制什么时候遍历停止,*stop = YES 将停止遍历
    [arr enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"%@",obj);
    }];
    
    给NSArray中所有元素发消息
    • 如果集合中保存的是自定义对象,想让集合中得所有对象都执行某一个方法的时候
    • 可以使用以下两个方法
    • 如果数组中的对象没有这个方法会报错
    [arr makeObjectsPerformSelector:@selector(方法名)];
    [arr makeObjectsPerformSelector:@selector(方法名:) withObject:@""];
    
    NSArray排序
    • 数组中得元素都是Foundation框架中的对象,不是自定义对象
    • 使用compare:方法进行排序
    NSArray *arr = @[@3,@1,@4,@10,@5];
    NSArray *newArr1 = [arr sortedArrayUsingSelector:@selector(compare:)];
    
    • 下面的这个方法可以针对Foundation框架中的对象,也可以是自定义对象
    • 默认是升序排序
    • block中的两个参数类型可以根据数组中元素的类型进行更改
    NSArray *arr = @[@3,@1,@4,@10,@5];
    NSArray *newArr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(NSNumber *obj1, NSNumber *obj2) {
         return obj1 > obj2;
    }];
    
    NSArray与NSString之间的转换
    • NSArray 转换为 NSString
    • - (NSString *)componentsJoinedByString:(NSString *)separator;
    • separator 插入元素之间的字符串
    NSArray *arr = @[@3,@1,@4,@10,@5];
    NSString *str = [arr componentsJoinedByString:@"--"];
    
    • NSString 转换成 NSArray
    • - (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
    • eparator 最为分割符切割字符串
    NSString *str1 = @"3--1--4--10--5";
    NSArray *arr1 = [str1 componentsSeparatedByString:@"--"];
    
    NSArray文件读写
    • 将数组写入文件
    • 数组元素必须是Foundation框架中类创建的对象
    • 如果是自定义对象将没有办法写入
    NSArray *arr = @[@"123",@"awe11",@"zdxcq"];
    [arr writeToFile:@"/Users/coder/Desktop/sublime.plist" atomically:YES];
    
    • 从文件中读取数据到NSArray中
    NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"/Users/coder/Desktop/sublime.plist"];
    

    相关文章

      网友评论

        本文标题:NSArray的基本使用

        本文链接:https://www.haomeiwen.com/subject/ppcgmttx.html