.数组的创建

    //注意:在OC的数组中,只能够存放对象
//    NSArray *array = [NSArray arrayWithObject:12];错误
    
    //创建字符串
    NSString *str1 = @"zhangsan";
    NSString *str2 = @"lisi";
    NSString *str3 = @"wangwu";
    
    //创建数组,并且设置多个元素
    //注意:是以nil结尾的
    NSArray *array1 = [[NSArray alloc] initWithObjects:str1,str2,str3, nil];
    NSLog(@"array1:%@",array1.description);
    
    //使用对应的类方法
    NSArray *array2 = [NSArray arrayWithObjects:str1,str2,str3, nil];
    NSLog(@"array2:%@",array2);
    
    //创建数组的同时初始化一个元素
    NSArray *array3 = [[NSArray alloc] initWithObjects:str1, nil];
    NSArray *array4 = [NSArray arrayWithObject:str1];
    NSLog(@"array3:%@ \n  array4:%@",array3,array4);
    
    //创建数组的同时使用一个已有的数组初始化
    NSArray *array5 = [[NSArray alloc] initWithArray:array2];
    NSArray *array6 = [NSArray arrayWithArray:array2];
    NSLog(@"array5:%@ \n  array6:%@",array5,array6);
    
    .获取数组的相应元素
    
    //-----------根据下标取元素---------
    NSString *str = [array5 objectAtIndex:];
    
    .获取数组元素个数     NSUInteger count = array5.count; //[array5 count];
    NSLog(@"count:%ld",count);
      
    .判断某一个元素是否在一个数组中     BOOL isContain = [array5 containsObject:@"zhaoliu"];
    if (!isContain) {
        NSLog(@"不包含zhaoliu");
    }
    
    .根据某一个元素获取下标
    //如果有这个元素,则返回相应的下标,没有则返回NSNotFound
    NSInteger index = [array5 indexOfObject:@"zhaofei"];
    if (index == NSNotFound) {
        NSLog(@"没有响应的元素");
    }
    
    .注意两个数组的区别     //将array5中的所有元素交给array8
    NSArray *array8 = [NSArray arrayWithArray:array5];
    
    NSArray *array9 = [NSArray arrayWithObject:array5];
    NSLog(@"array9:%@",array9);     .获取数组中最前面/最后面的一个元素     NSString *firstStr = [array8 firstObject];
    NSString *lastStr = [array8 lastObject];
    NSLog(@"firstStr:%@  lastStr:%@",firstStr,lastStr);
    
    .截取数组
    NSArray *array10 = [[NSArray alloc] initWithObjects:@"",@"",@"",@"",@"", nil];
    //截取出@"2",@"3",@"4"
    NSRange rg = {,};
    NSArray *subArray = [array10 subarrayWithRange:rg];
    NSLog(@"subArray:%@",subArray);
    
    .追加数组
    //追加一个元素
//    [array10 arrayByAddingObject:<#(nonnull id)#>]
    //在array10后面追加元素
    NSArray *addArray = [array10 arrayByAddingObjectsFromArray:array1];
    NSLog(@"%@",addArray);     .数组比较
    if ([array1 isEqualToArray:array2]) {
        NSLog(@"array1和array2相同");
    }
    
    .判断两个数组的开头是否相同     // 1,2,4,5    3,2,1,6
    NSArray *a = @[@"",@"",@"",@""];
    NSArray *a2 = @[@"",@"",@"",@""];
    NSString *sameS = [a firstObjectCommonWithArray:a2];
    NSLog(@"%@",sameS);
    if (![array1 firstObjectCommonWithArray:array10]) {
        NSLog(@"第一个元素不相同");
    }
    
    .数组遍历     //方式一:
    //遍历addArray
    //获取addArray数组的长度
    NSUInteger count2 = addArray.count;
    for (int i=; i<count2; i++) { //注意数组越界
        //i:0....
        //根据下标获取元素
//        NSString *obj = [addArray objectAtIndex:i];
        //等价
        NSString *obj = addArray[i];
        NSLog(@"obj:%@",obj);
    }
    
    //方式二:快速遍历
    for (NSString *str in addArray) {
        NSLog(@"str:%@",str);
    }
    
    
    //------------数组新语法------------
//    int a[] = {1,2,3,4}
//    a[2]
    //创建并且初始化数组
    NSArray *array11 = @[@"",@"",@"",@"",@""];
    NSLog(@"%@",array11);
    
    //根据制定下标获取元素
    NSString *s = array11[];
    NSLog(@"s:%@",s);
    
二:可变数组(NSMutableArray)
    
    NSString *s1 = @"zhaoliu";
    NSString *s2 = @"tianqi";
    NSString *s3 = @"suba";
    
    .创建可变数组
    //不可以这么写
//    NSMutableArray *mutArray = @[s1,s2,s3];
    
    //创建一个容量为5的数组,可以存放超过5个元素,空间会自动增加
    NSMutableArray *mutArray1 = [NSMutableArray arrayWithCapacity:];
    //注意:此时没有元素,0
    NSUInteger mutCount = mutArray1.count;
    NSLog(@"mutCount:%ld",mutCount);
    
    NSMutableArray *mutArray2 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3, nil];
    
    .添加元素
//    [mutArray2 addObject:str1];
//    [mutArray2 addObject:str2];
//    [mutArray2 addObject:str3];
    
    //2.将一个数组中的元素添加到可辨数组中
    [mutArray2 addObjectsFromArray:array1];
    
    //3.将一个数组作为一个元素添加到数组中
    [mutArray2 addObject:array1];
    
    .插入元素     [mutArray2 insertObject:@"" atIndex:];     .替换元素
    [mutArray2 replaceObjectAtIndex: withObject:@"bingge"];     
    //可以替换多个
//    [mutArray2 replaceObjectsInRange:<#(NSRange)#> withObjectsFromArray:<#(nonnull NSArray *)#>]
    
    .交换
    [mutArray2 exchangeObjectAtIndex: withObjectAtIndex:];
    
    
    .删除
    
    //删除所有元素
//    [mutArray2 removeAllObjects];
    
    //删除最后一个元素
//    [mutArray2 removeLastObject];
    
    //删除指定元素
//    [mutArray2 removeObject:@"bingge"];
    
//    /删除指定下标元素
//    [mutArray2 removeObjectAtIndex:1];
    
    //删除多个元素
    NSRange rg1 = {,};
    NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:rg1];
    
    [mutArray2 removeObjectsAtIndexes:indexSet];
    
    NSLog(@"mutArray2:%@",mutArray2);
    
    
    .数组元素排序     NSArray *array = @[@"agfd",
                       @"abc",
                       @"adf",
                       @"aaa",
                       @"csw",
                       @"swa"];
    
    NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
    NSLog(@"newArray:%@",newArray);
    

Foundation ----->NSArray的更多相关文章

  1. 【IOS】IOS高速入门之OC语法

    Objective-C 是 C 语言的超集 您还能够訪问标准 C 库例程,比如在stdlib.h和stdio.h中声明的那些例程. Objective-C 还是一种很动态的程序设计语言,并且这样的动态 ...

  2. Object-C 新手教程

    大纲 開始吧 下载这篇教学 设定环境 前言 编译 hello world 创建 Classes @interface @implementation 把它们凑在一起 具体说明... 多重參数 建构子( ...

  3. iOS扩展——Objective-C开发编程规范

    最近准备开始系统学习一个完整项目的开发流程和思路,在此之前,我们需要对iOS的开发变成规范进行更系统和详尽的学习,随意对编程规范进行了整理和学习.本文内容主要转载自:Objective-C-Codin ...

  4. [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换

    1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...

  5. iOS命名规范(转载)

    转载地址:http://www.cnblogs.com/qiqibo/archive/2012/09/05/2671553.html 正文: • 格式化代码 ◦ 指针“*”号的位置 ▪ 如:NSStr ...

  6. NSKeyValueObserving.m

    https://github.com/farcaller/cocotron/blob/af740de86c9bee84c59ffc74d27e5df9e22e1391/Foundation/NSKey ...

  7. 值得借鉴的Objective-C编程规范

    Daniel's Objective-C Coding Style Guidelines http://google-styleguide.googlecode.com/svn/trunk/objcg ...

  8. [翻译] BFKit

    BFKit BFKit is a collection of useful classes to develop Apps faster. BFKit是一个有用的工具集合,帮助你快速开发. Insta ...

  9. kvc和kvo的使用情况的了解

    了解cocoa:Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之中的一个(其他四个是Carbon.POSIX.X11和Java). 苹果的面向对象开 ...

随机推荐

  1. 安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决

    安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决 请把手机时间调成当前时间.

  2. 动态加载(异步加载)jquery/MUI类库 页面加载完成后加载js类库

    动态加载Mui类库: // ==UserScript== // @name // @version 1.4.0 // @author zzdhidden@gmail.com // @namespace ...

  3. C++ 资源大全

    http://www.uml.org.cn/c++/201411145.asp http://ezlippi.com/blog/2014/12/c-open-project.html <C++ ...

  4. C++STL算法函数总结

    容器自己定义了的算法vector:swaplist:swap,merge,splice,remove,remove_if,reverse,uniquedeque:swapmap,set,multise ...

  5. MaskEdit 使用方法

    它有一个  MaskEdit 属性(注意,属性) 打开后有一个   Input Mask 编辑框 格式符意义 L 允许输入英文字母,且一定要输入                      l 允许输入 ...

  6. <<软技能,代码之外的生存技能>>读书笔记

    管理 1. 制定大目标,再分解成小目标,定时反思自己的长期和短期的成果 2. 人都希望自己很重要, 要让下属有存在感,让他们做事有成就感 3. 奖励积极比惩罚消极更有用 4. 学会换位思考,不要用&q ...

  7. PHP扩展下载指导

    http://pecl.php.net/package/ 相信很多人为了找PHP扩展包,很发愁. 其实可以去官网下载,还有各个版本选择,不必担心下载到了错误版本,浪费时间以及网站积分. 简单说下方法: ...

  8. Bower 自定义组件文件夹名称

    默认情况下, bower 会自动把文件安装在文件夹 bower_components 下面,如果希望自定义这个文件夹的名称为 components ,可以创建一个名称为 ".bowerrc& ...

  9. Python从线程获取函数返回值

    Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...

  10. 火车采集器 帝国CMS7.2免登录发布模块

    帝国cms7.2增加了金刚模式,登录发布有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 免登录直接获取栏目列表 通过文件内设置密码免登录发布数据 帝国cms7.2免登陆文章发布接口使用说 ...