1. .数组的创建
  2.  
  3.     //注意:在OC的数组中,只能够存放对象
  4. //    NSArray *array = [NSArray arrayWithObject:12];错误
  5.     
  6.     //创建字符串
  7.     NSString *str1 = @"zhangsan";
  8.     NSString *str2 = @"lisi";
  9.     NSString *str3 = @"wangwu";
  10.     
  11.     //创建数组,并且设置多个元素
  12.     //注意:是以nil结尾的
  13.     NSArray *array1 = [[NSArray alloc] initWithObjects:str1,str2,str3, nil];
  14.     NSLog(@"array1:%@",array1.description);
  15.     
  16.     //使用对应的类方法
  17.     NSArray *array2 = [NSArray arrayWithObjects:str1,str2,str3, nil];
  18.     NSLog(@"array2:%@",array2);
  19.     
  20.     //创建数组的同时初始化一个元素
  21.     NSArray *array3 = [[NSArray alloc] initWithObjects:str1, nil];
  22.     NSArray *array4 = [NSArray arrayWithObject:str1];
  23.     NSLog(@"array3:%@ \n  array4:%@",array3,array4);
  24.     
  25.     //创建数组的同时使用一个已有的数组初始化
  26.     NSArray *array5 = [[NSArray alloc] initWithArray:array2];
  27.     NSArray *array6 = [NSArray arrayWithArray:array2];
  28.     NSLog(@"array5:%@ \n  array6:%@",array5,array6);
  29.     
  30.     .获取数组的相应元素
  31.     
  32.     //-----------根据下标取元素---------
  33.     NSString *str = [array5 objectAtIndex:];
  34.     
  35.     .获取数组元素个数
  36.  
  37.     NSUInteger count = array5.count; //[array5 count];
  38.     NSLog(@"count:%ld",count);
  39.       
  40.     .判断某一个元素是否在一个数组中
  41.  
  42.     BOOL isContain = [array5 containsObject:@"zhaoliu"];
  43.     if (!isContain) {
  44.         NSLog(@"不包含zhaoliu");
  45.     }
  46.     
  47.     .根据某一个元素获取下标
  48.     //如果有这个元素,则返回相应的下标,没有则返回NSNotFound
  49.     NSInteger index = [array5 indexOfObject:@"zhaofei"];
  50.     if (index == NSNotFound) {
  51.         NSLog(@"没有响应的元素");
  52.     }
  53.     
  54.     .注意两个数组的区别
  55.  
  56.     //将array5中的所有元素交给array8
  57.     NSArray *array8 = [NSArray arrayWithArray:array5];
  58.     
  59.     NSArray *array9 = [NSArray arrayWithObject:array5];
  60.     NSLog(@"array9:%@",array9);
  61.  
  62.     .获取数组中最前面/最后面的一个元素
  63.  
  64.     NSString *firstStr = [array8 firstObject];
  65.     NSString *lastStr = [array8 lastObject];
  66.     NSLog(@"firstStr:%@  lastStr:%@",firstStr,lastStr);
  67.     
  68.     .截取数组
  69.     NSArray *array10 = [[NSArray alloc] initWithObjects:@"",@"",@"",@"",@"", nil];
  70.     //截取出@"2",@"3",@"4"
  71.     NSRange rg = {,};
  72.     NSArray *subArray = [array10 subarrayWithRange:rg];
  73.     NSLog(@"subArray:%@",subArray);
  74.     
  75.     .追加数组
  76.     //追加一个元素
  77. //    [array10 arrayByAddingObject:<#(nonnull id)#>]
  78.     //在array10后面追加元素
  79.     NSArray *addArray = [array10 arrayByAddingObjectsFromArray:array1];
  80.     NSLog(@"%@",addArray);
  81.  
  82.     .数组比较
  83.     if ([array1 isEqualToArray:array2]) {
  84.         NSLog(@"array1和array2相同");
  85.     }
  86.     
  87.     .判断两个数组的开头是否相同
  88.  
  89.     // 1,2,4,5    3,2,1,6
  90.     NSArray *a = @[@"",@"",@"",@""];
  91.     NSArray *a2 = @[@"",@"",@"",@""];
  92.     NSString *sameS = [a firstObjectCommonWithArray:a2];
  93.     NSLog(@"%@",sameS);
  94.     if (![array1 firstObjectCommonWithArray:array10]) {
  95.         NSLog(@"第一个元素不相同");
  96.     }
  97.     
  98.     .数组遍历
  99.  
  100.     //方式一:
  101.     //遍历addArray
  102.     //获取addArray数组的长度
  103.     NSUInteger count2 = addArray.count;
  104.     for (int i=; i<count2; i++) { //注意数组越界
  105.         //i:0....
  106.         //根据下标获取元素
  107. //        NSString *obj = [addArray objectAtIndex:i];
  108.         //等价
  109.         NSString *obj = addArray[i];
  110.         NSLog(@"obj:%@",obj);
  111.     }
  112.     
  113.     //方式二:快速遍历
  114.     for (NSString *str in addArray) {
  115.         NSLog(@"str:%@",str);
  116.     }
  117.     
  118.     
  119.     //------------数组新语法------------
  120. //    int a[] = {1,2,3,4}
  121. //    a[2]
  122.     //创建并且初始化数组
  123.     NSArray *array11 = @[@"",@"",@"",@"",@""];
  124.     NSLog(@"%@",array11);
  125.     
  126.     //根据制定下标获取元素
  127.     NSString *s = array11[];
  128.     NSLog(@"s:%@",s);
  129.     
  130. 二:可变数组(NSMutableArray)
  131.     
  132.     NSString *s1 = @"zhaoliu";
  133.     NSString *s2 = @"tianqi";
  134.     NSString *s3 = @"suba";
  135.     
  136.     .创建可变数组
  137.     //不可以这么写
  138. //    NSMutableArray *mutArray = @[s1,s2,s3];
  139.     
  140.     //创建一个容量为5的数组,可以存放超过5个元素,空间会自动增加
  141.     NSMutableArray *mutArray1 = [NSMutableArray arrayWithCapacity:];
  142.     //注意:此时没有元素,0
  143.     NSUInteger mutCount = mutArray1.count;
  144.     NSLog(@"mutCount:%ld",mutCount);
  145.     
  146.     NSMutableArray *mutArray2 = [[NSMutableArray alloc] initWithObjects:s1,s2,s3, nil];
  147.     
  148.     .添加元素
  149. //    [mutArray2 addObject:str1];
  150. //    [mutArray2 addObject:str2];
  151. //    [mutArray2 addObject:str3];
  152.     
  153.     //2.将一个数组中的元素添加到可辨数组中
  154.     [mutArray2 addObjectsFromArray:array1];
  155.     
  156.     //3.将一个数组作为一个元素添加到数组中
  157.     [mutArray2 addObject:array1];
  158.     
  159.     .插入元素
  160.  
  161.     [mutArray2 insertObject:@"" atIndex:];
  162.  
  163.     .替换元素
  164.     [mutArray2 replaceObjectAtIndex: withObject:@"bingge"];
  165.  
  166.     
  167.     //可以替换多个
  168. //    [mutArray2 replaceObjectsInRange:<#(NSRange)#> withObjectsFromArray:<#(nonnull NSArray *)#>]
  169.     
  170.     .交换
  171.     [mutArray2 exchangeObjectAtIndex: withObjectAtIndex:];
  172.     
  173.     
  174.     .删除
  175.     
  176.     //删除所有元素
  177. //    [mutArray2 removeAllObjects];
  178.     
  179.     //删除最后一个元素
  180. //    [mutArray2 removeLastObject];
  181.     
  182.     //删除指定元素
  183. //    [mutArray2 removeObject:@"bingge"];
  184.     
  185. //    /删除指定下标元素
  186. //    [mutArray2 removeObjectAtIndex:1];
  187.     
  188.     //删除多个元素
  189.     NSRange rg1 = {,};
  190.     NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:rg1];
  191.     
  192.     [mutArray2 removeObjectsAtIndexes:indexSet];
  193.     
  194.     NSLog(@"mutArray2:%@",mutArray2);
  195.     
  196.     
  197.     .数组元素排序
  198.  
  199.     NSArray *array = @[@"agfd",
  200.                        @"abc",
  201.                        @"adf",
  202.                        @"aaa",
  203.                        @"csw",
  204.                        @"swa"];
  205.     
  206.     NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
  207.     NSLog(@"newArray:%@",newArray);
  208.     

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. 002. Centos7安装mysql5.5.37

    下载cmake-2.8.12.2.tar.gz, 下载地址: https://pan.baidu.com/s/1qYtpX7m 下载mysql-5.5.37.tar.gz, 下载地址: http:// ...

  2. NULL指针、零指针、野指针

    1.1.空指针 如果 p 是一个指针变量,则 p = 0; p = 0L; p = '\0'; p = 3 - 3; p = 0 * 17;p=(void*)0; 中的任何一种赋值操作之后, p 都成 ...

  3. delphi locate多字段查询

    简单格式: IF MSQ_NewBillQuantity.Locate('FStockID;FMarchID', VarArrayOf([FStockID, FMarchID]), []) = Fal ...

  4. Hibernate之对象的三种状态

    Hibernate之Java对象的三种状态 一.简述 本博文大部分的思想和内容引子CSND上名为 FG2006 这位大神的文章,连接地址为:http://blog.csdn.net/fg2006/ar ...

  5. left join 取一条数据

    产品生产过程中要记录产品在制作过程中的不良历史,即使在一个工序,也可以产生多条不良历史记录,所有的不良信息保存在B表中.假设产品在打包工序,存放打包工序成品参数记录的表A,数据是唯一的.但在打包过程中 ...

  6. 源码阅读笔记 - 2 std::vector (1)

    vector的源码真是太长了,今天用了一个下午和一个晚上看和注释了前面的一千行左右 p.s.博客园的代码高亮真是太垃圾, 如果想要阅读带注释的源码,推荐粘贴到VS2015里,然后按ctrl+z取消自动 ...

  7. Angular2+typescript+webpack2(支持aot, tree shaking, lazy loading)

    概述 Angular2官方推荐的应该是使用systemjs加载, 但是当我使用到它的tree shaking的时候,发现如果使用systemjs+rollup,只能打包成一个文件,然后lazy loa ...

  8. Spring AOP 由浅入深

    (分析基于Spring的版本:version = 4.1.6.RELEASE) Spring AOP工厂: org.springframework.aop.framework.DefaultAopPr ...

  9. Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels.

    Sorry, but the Android VPN API doesn’t currently allow TAP-based tunnels. Edit .ovpn configfile “dev ...

  10. Spark1.3使用外部数据源时条件过滤只要是字符串类型的值均报错

    CREATE TEMPORARY TABLE spark_tbls USING org.apache.spark.sql.jdbc OPTIONS ( url 'jdbc:mysql://hadoop ...