Objective-C---4---数组和值对象

1. NSArray

OC中的数组:相当于容器,里面装的是ObjC对象,一旦创建,不可改变,数组是有序集合,只能存放对象

iOS中存放数据的容器类叫做集合

1.1  创建不可变数组:

#pragma mark----不可变数组
        {
        // 1. 创建空数组
        NSArray *array = [NSArray array];//  这样创建是无意义的
        
        // 2. 创建数组 一个元素
        NSArray *array1 = [NSArray arrayWithObject:@"1"];
        
        // 3. 创建数组,多个元素
        NSArray *array2 = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
        
        // 4. 创建数组,使用对象方法
        NSArray *array3 = [[NSArray alloc] initWithObjects:@"four", @"five", nil];
        
        // 5. 使用一个数组创建另一个数组
        NSArray *array4 = [NSArray arrayWithArray:array2];
        
        NSLog(@"%@",array);
        NSLog(@"%@",array1);
        NSLog(@"%@",array2);
        NSLog(@"%@",array3);
        NSLog(@"%@",array4);
        }


1.2 不可变数组的常用方法:

#pragma mark-------不可变常用方法
        {
            NSArray *arr = [NSArray arrayWithObjects:@"one", @"two", @"three", [NSNull null],nil];
            NSLog(@"%@",arr);
            
   // 1. 获取数组元素个数
            NSLog(@"%ld", arr.count);
            
   // 2. 根据下标获取对应元素
            NSLog(@"%@", [arr objectAtIndex:1]);
            
   // 3. 返回元素的下标
            NSUInteger a = [arr indexOfObject:@"three"];//  方法返回值是NSUInteger
            NSLog(@"%lu",a);
            
   // 4. 判断数组中是否包含了某个元素
            if ([arr containsObject:@"five"]) { //  该方法返回值为BOOL
                NSLog(@"yes");
            }else{
                NSLog(@"no");
            }
            
        }

1.3 简化使用方法:

#pragma mark-------简化用法
        {
   // 1. 简化创建
        NSArray *arr = @[@"one", @"two", @"three"];
        NSLog(@"%@",arr);
        
   // 2. 简化访问数组元素
        NSString *str = [arr objectAtIndex:2];
        NSLog(@"%@",str);
        
        str = arr[0];
        NSLog(@"%@",str);
        }

1.4 数组遍历:

#pragma mark-------数组遍历
        {
            NSArray *array = @[@"1", @"2", @"3", @"4"];
            // 1. 第一种遍历
            for (int i = 0; i < array.count; i++) {
                NSLog(@"%@",array[i]);
            }
            
            // 2. 第二种遍历---快速枚举法
            for (NSString *obj in array) {
                NSLog(@"%@",obj);
            }
            
            
            // 3. 第三种方式:block
            // obj:数组元素    idx:数组下标    stop:是否停止的条件
            [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                NSLog(@"下标 = %lu, %@", idx, obj);
            }];
            
            [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                if(idx == 2){
                    *stop = YES;
                }else{
                    NSLog(@"下标 = %lu, %@", idx, obj);
                }
            }];
        }

打印结果:

2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 0, 1
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 1, 2
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 2, 3
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 3, 4
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 0, 1
2015-09-28 15:30:31.459 Lesson-OC-4-NSArray-NSMutableArray[1448:139281] 下标 = 1, 2


Unix终端命令大全:http://wiki.ubuntu.org.cn/Unix%E5%91%BD%E4%BB%A4%E5%A4%A7%E5%85%A8


1.5 可变数组:

#pragma mark-------可变数组
        {
        //  1. 创建空数组---是有意义滴,因为你可以添加
            NSMutableArray *array = [NSMutableArray array];
            [array addObject:@"1"];
            NSLog(@"%@", array);
            
        // 2. 创建数组,初始化单个元素
            NSMutableArray *arr1 = [NSMutableArray arrayWithObject:@"2"];
            
        // 3. 创建数组,初始化多个元素
            NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:@"3", @"4", @"5", @"6", @"7", nil];
            
        // 4. 创建数组,指定数组长度
            NSMutableArray *arr3 = [NSMutableArray arrayWithCapacity:5];
            //   arr3 = [NSMutableArray arrayWithObjects:@"10", @"9", @"8", @"7", @"6", nil];
            
            //  简化初始化:从0开始赋值
            arr3[0]=@"10";
            arr3[1]=@"9";
            arr3[2]=@"8";
            arr3[3]=@"7";
            arr3[4]=@"6";
            
            
        // 1. 增
            [array addObject:@"2"];
            NSLog(@"%@",array);
        
        // 2. 插入
            [arr1 insertObject:@"4" atIndex:0];
            NSLog(@"%@", arr1);
            
        //3. 删除
            [arr2 removeLastObject];
            NSLog(@"%@", arr2);
            
            [arr2 removeObjectAtIndex:0];
            NSLog(@"%@", arr2);
            
            [arr2 removeObject:@"4"];
            NSLog(@"%@",arr2);
            
        // 4. 替换
            [arr3 replaceObjectAtIndex:0 withObject:@"1"];
            NSLog(@"%@",arr3);
            
       // 5. 查找元素:
            NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@3, @4, @5, @6, @7, nil];
            BOOL r = [arr4 containsObject:@6];
            NSLog(@"%d",r);
            
      // 6. 交换元素:
            [arr4 exchangeObjectAtIndex:0 withObjectAtIndex:4];
            NSLog(@"%@",arr4);
            
            /* 
             可变数组使用以下创建方法:NSArray *arr = @[@"one", @"two", @"three"];
            则系统默认为不可变数组,如果对其进行修改,会出问题
             */
            
        }


1.6 读写文件

#pragma mark-------读写文件
        {
              读写文件   首先写文件:
             创建数组---保存到文件中plist,plist是一种特殊的文件格式---
            NSArray *array = @[@"1", @"2", @"3", @"4", @"5"];
            BOOL isWrite = [array writeToFile:@"/Users/lanou3g/Desktop/array.plist" atomically:YES];
            if (isWrite) {
                NSLog(@"写入成功");
            }else
                NSLog(@"写入失败");
            
            
            NSArray *readArray = [NSArray arrayWithContentsOfFile:@"/Users/lanou3g/Desktop/array.plist"];
            NSLog(@"%@",readArray);
        }


1.7 NSNumber

#pragma mark-------NSNumber      
{
            /* NSNumber是ObjC中处理数值的一个类
                NSNumber可以把基本数据类型转换为对象,然后就可以方法数组或者字典中
             
             int,float,double --- object
             */
            
            int a = 10;
            float b = 10.2;
            double c = 10.4;
            NSMutableArray *arr = [NSMutableArray array];
            
            // 将C语言中的类型转换为对象:
            NSNumber *numa = [NSNumber numberWithInt:a];
            NSNumber *numb = [NSNumber numberWithFloat:b];
            NSNumber *numc = [NSNumber numberWithDouble:c];// 封装成对象了  
            //  简化方法:
            NSNumber *d = @1;
<pre name="code" class="objc"><pre name="code" class="objc">            [arr addObject:numa];  
            [arr addObject:@(b)]; 
            [arr addObject:numb]; 
            [arr addObject:numc]; 
            NSLog(@"%@",arr);
 }
 

 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值