关闭

【黑马程序员】OC-Foundation框架—NSArray和NSMutableArray

标签: Foundation框架NSMutableArrayiosocNSArray
180人阅读 评论(0) 收藏 举报
分类:

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

一、NSArray的介绍和基本使用

1)什么是NSArray?

NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组 C语言中数组的弊端

int array[4] = {10, 89, 27, 76};

只能存放一种类型的数据.(类型必须一致) 不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)

2)NSArray的使用注意

只能存放任意OC对象, 并且是有顺序的

不能存储非OC对象, 比如int\float\double\char\enum\struct等

它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不 能再往里面添加元素


<span style="font-size:14px;">//
//  main.m
//  NSArray的介绍和使用
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
      
        //1.创建一个空数组
        NSArray *arr1 = [NSArray array];
        //2.创建数组,只有一个元素
        NSArray *arr2 = [NSArray arrayWithObject:@"1"];
        //3.创建数组,有多个元素
        NSArray *arr3 = [NSArray arrayWithObjects:@"1",@"2", nil];
        //4.调用对象方法。创建数组
        NSArray *arr4 =[[NSArray alloc] initWithObjects:@1,[NSNull null],@3, nil];
        //5.用一个数组创建另外一个数组
        NSArray *arr5 = [NSArray arrayWithArray:arr1];
    }
    return 0;
}
</span>

二、NSArray的常用用法


<span style="font-size:14px;">//
//  main.m
//  NSArray的常用用法
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //定义一个数组
        NSArray *arr = [NSArray arrayWithObjects:@"one",@"two",@3,@"4",nil];
        
        //获取数组的长度
        NSUInteger count = arr.count;
        //根据下标获取对应的对象
        NSLog(@"%@",[arr objectAtIndex:3]);
        //返回元素的下标
        NSLog(@"%ld",[arr indexOfObject:@"4"]);
        //数组是否包含某一个元素
        BOOL c = [arr containsObject:@3];
        NSLog(@"%d",c);
        //用简化的方式来定义数组
        NSArray *arr2 = @[@"1",@"2",@3,@"four"];
        //用简化的方式访问数组元素
        NSLog(@"%@",arr2[2]);
        
    }
    return 0;
}
</span>

三、NSArray的遍历


<span style="font-size:14px;">//
//  main.m
//  NSArray的遍历
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义一个数组
        NSArray *arr = @[@"one",@"two",@"three",@"four"];
        //方法1遍历
        for (int i=0; i<arr.count; i++) {
            NSLog(@"%@",arr[i]);
        }
        
        //方法2  快速枚举
        for (NSString *str in arr) {
            NSLog(@"%@",str);
        }
        
        //方法三 用block
        [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            if (idx==3) {
                *stop = YES;  //YES的时候停止
            }else{
                NSLog(@"%ld,%@",idx,obj);
            }
        }];
        
    }
    return 0;
}
</span>

四、NSArray读写文件


<span style="font-size:14px;">//
//  main.m
//  NSArray读写文件
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义一个数组
        NSArray *arr = [NSArray arrayWithObjects:@"one",@"zbz",@"cgx",@"sb",nil];
        
        //把数组写入到文件中
        BOOL isWrite = [arr writeToFile:@"/Users/Brisinga/Desktop/a.plist" atomically:YES];
        
        //读取文件信息到数组
        NSArray *arr2 = [NSArray arrayWithContentsOfFile:@"/Users/Brisinga/Desktop/a.plist"];
        NSLog(@"%@",arr2);
    }
    return 0;
}
</span>

五、NSArray与字符串


1.把数组元素连城一个字符串

2.把一个字符串分割成多个元素并放在同一个数组中

<span style="font-size:14px;">//
//  main.m
//  NSArray与字符串
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义一个数组
        NSArray *arr = @[@1,@2,@3,@4];
        //需求 把数组中的元素用“-”连接起来:1-2-3-4
        NSString *str = [arr componentsJoinedByString:@"-"];
        NSLog(@"%@",str);
        
        //2把一个字符串分割成数组
        arr = [str componentsSeparatedByString:@"-"];
        NSLog(@"%@",arr[2]);
        NSLog(@"%@",[arr firstObject]);
        NSLog(@"%@",[arr lastObject]);
        
        //应用分割400-800-12580#400-808-11200
        NSString *str1 = @"400-800-12580#400-808-11200";
        NSArray *arr1 = [str1 componentsSeparatedByString:@"#"];
        NSArray *arr2 = [[arr1 firstObject] componentsSeparatedByString:@"-"];
        NSLog(@"%@",arr2);
        NSArray *arr3 = [arr1[1] componentsSeparatedByString:@"-"];
        NSLog(@"%@",arr3);
        
    }
    return 0;
}
</span>

六、NSMutableArray的基本使用

NSMutableArray是NSArray的子类

NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素

NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素


<span style="font-size:14px;">//
//  main.m
//  NSMutableArray的基本使用
//
//  Created by Brisinga on 15/11/18.
//  Copyright © 2015年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //1)创建数组
            //i.空数组
        NSMutableArray *arr1 = [NSMutableArray array];
            //ii.创建的时候初始化一个元素
        NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@1];
            //iii.创建的时候出事话多个元素
        NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@1,@2,@3, nil];
            ///iv.创建一个数组并且制定长度
        NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];
        //2) 添加元素
        [arr1 addObject:@1];
        [arr1 insertObject:@2 atIndex:1];
        //3) 删除元素
        [arr1 removeObject:@2];  //根据对象删除
        [arr1 removeObjectAtIndex:0]; //根据下标删除
        [arr1 removeAllObjects]; //全部删除
        NSLog(@"%@",arr1);
        //4) 修改元素
        [arr3 replaceObjectAtIndex:1 withObject:@5];
        arr3[2] = @6;
        //5) 查找元素
        BOOL isSearch = [arr3 containsObject:@6];
        //交换元素
        [arr3 exchangeObjectAtIndex:2 withObjectAtIndex:0];
        
    }
    return 0;
}
</span>



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6284次
    • 积分:264
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档