.数组的创建

    //注意:在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. 042. asp.net使用缓存来提高母版页的访问性能

    Asp.Net缓存技术是一项非常重要的技术, 当一个页面被频繁的访问, 如果不使用缓存技术, 那么每访问一次就要回发一次服务器, 显然这样对服务器造成很大的负担, 所以, 可以在被频繁访问的页面中设置 ...

  2. 游戏AI框架

  3. Python单元测试和Mock测试

    单元测试 测试可以保证你的代码在一系列给定条件下正常工作 测试允许人们确保对代码的改动不会破坏现有的功能 测试迫使人们在不寻常条件的情况下思考代码,这可能会揭示出逻辑错误 良好的测试要求模块化,解耦代 ...

  4. shiro 自动登录

    1.出现的错误:did not match the expected credentials---密码不匹配,后来自己写密码验证,其实作用不大: 配置 <!-- Shiro权限过滤过滤器定义 - ...

  5. SQLSERVER 复制同一张表的递归结构

    CREATE PROCEDURE [dbo].[Pro_Copy] @OLDJiFenSeriesId VARCHAR(), @NEWJiFenSeriesId VARCHAR() AS BEGIN ...

  6. ecstore-app接口

    接口调用方式: 接口完整地址为:http://域名/index.php/wapapp/请求地址 比如获取商品信息就是 http://域名/index.php/wapapp/product.html 提 ...

  7. C++ CTime COleTime的一些操作技巧

    strCString="2003-10-27 6:24:37"; //CString--->COleDateTime COleVariant vtime(strCString ...

  8. Android学习笔记(十三)

    Android中的广播机制 Android提供了一套完整的API,允许应用程序自由地发送和接受广播. 发送广播的方法借助于Intent,接受广播的方法需要广播接收器(BroadcastsReceive ...

  9. bug--常见的bug总结:

    新手总结的开发中所遇到错误及解决办法,如有不对,欢迎指正,如有更好的解决办法,也请不吝赐教. 一.dialog.show()引起的android.view.WindowManager$BadToken ...

  10. caffe.exe (caffe.bin)用法回顾

    caffe.bin :command line brew usage : caffe  <command><args> commands: train:  训练或者微调一个网络 ...