黑马程序员--NSArray的使用

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

//NSArray的特点:
        //一旦创建成功,内容不可改变
        //只能存放OC对象
        
        //1)创建一个空数组
        NSArray *arr1 = [NSArray array];
        NSLog(@"arr1 = %@",arr1);
        
        //2)创建数组,并且只有一个元素
        NSArray *arr2 = [NSArray arrayWithObject:@"1"];
        NSLog(@"arr2 = %@",arr2);
        
        //最常用!  3)创建数组,有多个元素,多种类型
        //nil表示数组赋值结束,所以中间不能写nil,可以写 [NSNull null]
        NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1,nil];
        NSLog(@"arr3 = %@",arr3);
        
        //4)调用对象方法,创建数组
        NSArray *arr4 = [[NSArray alloc]initWithObjects:@"three",[NSNull null],@"four",nil];
        NSLog(@"arr4 = %@",arr4);
        
        //5)用一个数组可以创建另外一个数组,此时arr5和arr3一样了
        NSArray *arr5 = [NSArray arrayWithArray:arr3];
        NSLog(@"arr5 = %@",arr5);


数组的常见方法

   
    NSArray *arr2= [NSArray arrayWithObjects:@"one",@"two",@1,nil];
    
    //1)获得数组的长度  count获取数组的元素个数
    NSLog(@"%ld",arr2.count);
    
    //2)根据下标,获取下标对应的对象
    NSLog(@"%@",[arr2 objectAtIndex:2]); //获取下标为2的元素(第三个元素)
    
    //3)返回元素的下标
    NSUInteger loc = [arr2 indexOfObject:@"two"];
    NSLog(@"%ld",loc);
    
    //4)数组中是否包含了某个元素
    if ([arr2 containsObject:@"one"]) {
        NSLog(@"包含");
    }else{
        NSLog(@"不包含");
    }


用简化的方式,来定义和访问数组元素

        //1)用简化的方式定义数组
        //格式: @[数组元素]
        NSArray *arr = @[@"1",@"2",@3,@"four"];
        NSLog(@"%@",arr);
        NSLog(@"%@",[arr objectAtIndex:2]);
        
        //2)用简化的方式访问数组元素
        NSString *str = arr[1]; //c语言形式的数组元素访问
        NSLog(@"%@",str);


NSArray的遍历方式

//定义一个数组
        NSArray *arr = @[@"one",@"two",@"three",@"four"];
        
        //对数组进行遍历
        
        //1)普通方式,通过下标访问
        for (int i=0; i<arr.count; i++) {
            NSLog(@"%@",arr[i]);
        }
        
        //2)快速枚举  for循环的增强形式  助记符为 forin
        for (NSString * str in arr) {
            NSLog(@"->%@",str);
        }
        
        //3)使用block的方式,进行访问
        
        //                                   数组元素           元素下标
        [arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            //    是否停止
            
            //stop:YES 会停止    stop:NO 不会停止
            if(idx == 2){
                *stop = YES;  //当执行到下标为2时就停止打印,类似c语言的break
            }else{
                NSLog(@"idx = %ld,obj = %@",idx,obj);
            }
            
        }];


NSArray读写文件

        NSArray *array = [NSArray arrayWithObjects:@"one",@"two",@"three",nil];
        
        //把NSArray中得文件写入到文件中
        //arr.plist  一种特殊的文件格式
        BOOL isWrite = [array writeToFile:@"/Users/zyh/Desktop/arr.plist" atomically:YES];
        if (isWrite) {
            NSLog(@"写入成功");
        }
        
        //从文件读取数组
        NSArray *readArr = [NSArray arrayWithContentsOfFile:@"/Users/zyh/Desktop/arr.plist"];
        
        NSLog(@"readArr = %@",readArr);
        
        //数组文件读写有两种格式  plist   xml


NSArray与字符串

        //定义一个数组
        NSArray *arr = @[@1,@2,@3,@4];
        //1)需求:把数组中的元素用“-”连接起来
        // 1-2-3-4
        //[数组 componentsJoinedByString:@"分隔符"];
        NSString * str = [arr componentsJoinedByString:@"-"];
        NSLog(@"str = %@",str);
        
        //2)给一个字符串,分隔成一个数组
        //400-886-0078  //取得 400 886 0078
        //[字符串 componentsSeparatedByString:@"分隔符"];
        NSString *str2 = @"400-886-0078";
        NSArray *arr2 = [str2 componentsSeparatedByString:@"-"];
        NSLog(@"arr2 = %@",arr2);
        
        //多种类型分隔符
        NSString *str3 = @"400-886-0078#400-111-1111";
        NSArray *arr3 = [str3 componentsSeparatedByString:@"#"];
        NSLog(@"arr3 = %@",arr3);
        NSArray *arr4 = [arr3[0] componentsSeparatedByString:@"-"];
        NSLog(@"arr4 = %@",arr4);
        NSArray *arr5 = [arr3[1] componentsSeparatedByString:@"-"];
        NSLog(@"arr5 = %@",arr5);


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值