【学习ios之路:Objective-C】NSArray和NSMutableArray

1.不可变数组(NSArray)

1).不可变数组(NSArray)

*数组中只能存放对象.但是对于对象的类型没有限制.

* 实例化的时候以nil表示结束
* 通过下标索引对象

* NSArray无法添加.删除.修改元素.

2).创建对象,数组初始化赋值方法.

  
  //通过初始化添加数组元素 
  NSArray *array = [[NSArray alloc] initWithObjects:
                           @"dd",@"asdf",@"duc" ,@"xiaozhang",nil];
  NSLog(@"%@",array);
  
  //通过便利构造器方法添加数组元素           
  NSArray *array1 = [NSArray arrayWithObjects:@"asd",@"asdf",nil];
  NSLog(@"%@",array1);
  
  //笑笑语法,语法糖  ---- 字面量
  NSArray  *array = @[@"aa",@"asd",@"ddd",@"dd"];
  NSLog(@"%@",array);
       

3).%p与%@的区别

   Person *per = [[Person alloc] init];
   NSString *str = [NSString stringWithFormat:@"frank"];
   NSLog(@"%@",per);//decription
   NSLog(@"%@",str);//frank
   NSLog(@"%p",per);//0x100108120 指针变量存储的地址
   NSLog(@"%p",&per);//0x100108120 指针per的地址
4).数组常见操作
①通过下标获取元素

   //数组的下标
   NSArray *array  = [NSArray arrayWithObjects:@"sda",@"das",@"saad",nil];
   NSUInteger count = [array count];//数组元素个数
   NSLog(@"%ld",count);  
   //根据下标取出元素.
   //NSString *str = [array objectAtIndex:6];//角标越界
   NSString *str = [array objectAtIndex:2];//角标越界
   NSLog(@"%@",str);//saad
             
   NSString *str1 = [array objectAtIndex:0];//第一个元素
   NSString *str2 = [array firstObject];//第一个元素
   NSLog(@"%@",str1);
   NSLog(@"%@",str2);
   NSString *str3 = [array objectAtIndex:count - 1];//最后一个人
   NSString *str4 = [array lastObject];//最后一个
   NSLog(@"%@",str3);
   NSLog(@"%@",str4);
注:   objectAtIndex:count - 1 与 lastObject 方法的区别
         相同点:都是获取数组中的第一个元素.
         不同点:当数组中的元素个数为零时,使用第一个方法程序会报错.使用第二个方法程序会 返回nil.程序可以继续执行,

②.判断元素是否存在

   NSArray *arr = [[NSArray alloc] initWithObjects:@"asdf",@"ddd",@"ccc" ,nil];
   BOOL  isContain = [arr containsObject:@"ddd"];
③.根据对象获取下标

   //根据对象获取下标
   NSUInteger index = [arr indexOfObject:@"ddd"];
   NSLog(@"%ld",index);
   //NSRange range = NSMakeRange(1,1);
   //NSUInteger index1 = [arr indexOfObject:@"ccc" inRange:range];
   //NSLog(@"%ld",index1);

④.不可变数组遍历

   NSArray *arr = [[NSArray alloc] initWithObjects:@"asdf",@"ddd",@"ccc" ,nil];
   for (NSInteger i = 0;i < [arr count]; i++) {
         NSLog(@"%@",[arr objectAtIndex:i]);
       }
            
     //for in
     for (NSString *temp in arr) {
        NSLog(@"%@",temp);
        }

     //NSNumber 类 有接口,有实现
     //NSInteger 基本数据类型   
     //20 是整型数据 @20 整形对象 NSNumber
    NSArray *str1 = [NSArray arrayWithObjects:@34,@254,@20,@42,nil];
      for (NSNumber *num in str1) {
                NSLog(@"%@",num);
         }
         
5).可变数组(NSArray)

可变数组与不可变数组的区别:

    增加了增删除功能,即在原有的对象基础上做修改.

①创建对象


 
  //快速创建NSMutableArray对象,笑笑语法
        NSMutableArray  *array1 = [@[@"aa",@"dd",@"asd"] mutableCopy];
 //NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:1];
  NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
 //NSMutableArray *mutableArray1 = [NSMutableArray arrayWithObjects:
                                   @"asd",@"afg",@"dggd",@"fgads",nil];

②往数组中添加元素

   //(1).添加一个元素
   [mutableArray addObject:@"asd"];
    NSLog(@"%@",mutableArray);
   //(2).插入一个元素.
    [mutableArray insertObject:@"cdd" atIndex:0];
     NSLog(@"%@",mutableArray);
③替换元素

    [mutableArray replaceObjectAtIndex:0 withObject:@"hhe"];
    NSLog(@"%@",mutableArray);
④交换下标对应元素
    [mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:1];
    NSLog(@"%@",mutableArray);
⑤移除元素

    [mutableArray removeAllObjects];
    NSLog(@"%@",mutableArray);
    (1)移除指定元素
    [mutableArray removeObject:@"asd"];
    NSLog(@"%@",mutableArray);
    (2)移除指定下标对应的元素
    [mutableArray removeObjectAtIndex:0];
    NSLog(@"%@",mutableArray);
            
    (3)移除所有元素
    [mutableArray removeAllObjects];
    NSLog(@"%@",mutableArray);
⑥ 快速遍历
     for (NSString *str in mutableArray) {
          NSLog(@"%@",str);
       }
注:

      数组中可以存放相同的元素.
      数组的使用场景:当需要一个有序的集合来管理对象时,就使用数组.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值