0.数组的分类

NSArray :不可变数组
NSMutableArray : 可变数组

   1:  // @[] 只创建不可变数组NSArray
   2:      /* 错误写法
   3:      NSMutableArray *array = @[@"jack", @"rose"];
   4:  
   5:      [array addObject:@"jim"];
   6:      */
   7:      
   8:      
   9:      //NSArray *array = @[@"jack", @"rose"];

1.数组的创建

   1:  //    char s[8];
   2:      //    NSArray
   3:      // c语言里数组只能放定义时类型元素
   4:      // NSArray 可用放置各种类型对象
   5:      //NSArray *array = [NSArray array];
   6:      //NSArray *array1 = [NSArray arrayWithObject:@"12"];
   7:      NSArray *array2 = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
   8:      //NSArray *array3 = [NSArray arrayWithArray:array2];
   9:      
  10:      
  11:      //NSUInteger count = [array2 count];
  12:      //BOOL isContain = [array2 containsObject:@"22"];
  13:      //    NSLog(@"%d", isContain);
  14:      //id lastObj = [array2 lastObject];
  15:      
  16:      //    char s[8];
  17:      //    s[1]
  18:      //    id obj = [array2 objectAtIndex:0];
  19:      //    NSLog(@"%@", obj);
  20:      //    NSUInteger index = [array2 indexOfObject:@"2"];
  21:      //    NSLog(@"%zd", index);
  22:      
  23:      //    NSUInteger index = [array2 indexOfObject:@"3" inRange:NSMakeRange(0, 3)];
  24:      //    if (NSNotFound == index) {
  25:      //        NSLog(@"在0,2没有找到");
  26:      //    }else{
  27:      //        NSLog(@"找到了");
  28:      //    }

2.数组的常用操作

1)可变数组

   1:  //    NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:10];
   2:  //
   3:      NSMutableArray *array = [NSMutableArray array];
   4:      NSArray *array1 = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
   5:      [array setArray:array1];
   6:      
   7:      [array addObject:@"4"];
   8:      
   9:      // 1,2,3,4
  10:  //    [array removeObject:@"4"];
  11:  //    [array removeObjectAtIndex:3];
  12:  //    [array removeAllObjects];
  13:      
  14:  //    [array insertObject:@"11" atIndex:1];
  15:      // 1 11 2..
  16:  //    [array removeLastObject];
  17:  //    NSLog(@"%@", array);
  18:  //    [array replaceObjectAtIndex:0 withObject:@"11"];
  19:      
  20:      [array exchangeObjectAtIndex:0 withObjectAtIndex:1];
  21:      NSLog(@"%@", array);

2)读写文件

   1:   // 写入文件
   2:      //    NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
   3:      //    NSString *path = @"//Users/apple/Desktop/1.txt";
   4:      //    BOOL isSucess = [array writeToFile:path atomically:YES];
   5:      //    if (isSucess) {
   6:      //        NSLog(@"写入成功");
   7:      //    }else{
   8:      //          NSLog(@"写入失败");
   9:      //    }
  10:      
  11:      NSString *path = @"//Users/apple/Desktop/1.txt";
  12:      NSArray *array = [NSArray arrayWithContentsOfFile:path];
  13:      NSLog(@"%@", array);

3)和NSString相关的操作

   1:   NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
   2:      NSString *str = [array componentsJoinedByString:@"="];
   3:      
   4:      // 1=2=3
   5:      NSArray *array1 =[str componentsSeparatedByString:@"="];
   6:      NSLog(@"%@", array1);

4)数组的截取

   1:    NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
   2:      NSArray *array1 = [array arrayByAddingObject:@"4"];
   3:      //NSLog(@"%@ ===== %@", array, array1);
   4:      NSArray *array2 = [array subarrayWithRange:NSMakeRange(0, 2)];
   5:      NSLog(@"%@", array2);

5)数组的遍历

   1:  //NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
   2:      
   3:      // 普通遍历
   4:      //    for (int i=0; i<array.count; i++) {
   5:      //        id obj = [array objectAtIndex:i];
   6:      //        NSLog(@"%@", [obj description]);
   7:      //
   8:      //        if (1 == i) {
   9:      //            break;
  10:      //        }
  11:      //    }
  12:      
  13:      // 快速遍历
  14:      //    int i = 0;
  15:      //    for (id obj in array) {
  16:      //        NSLog(@"%@", [obj description]);
  17:      //
  18:      //        i++;
  19:      //        if (2==i) {
  20:      //            break;
  21:      //        }
  22:      //    }
  23:      
  24:      // block遍历
  25:      //    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
  26:      //        NSLog(@"%@", [obj description]);
  27:      //
  28:      //        if (1==idx) {
  29:      //            (*stop) = YES;
  30:      //        }
  31:      //    }];
  32:      
  33:      Dog *dog = [[Dog alloc] init];
  34:      Dog *dog1 = [[Dog alloc] init];
  35:      NSArray *array = [NSArray arrayWithObjects:dog, dog1, nil];
  36:      [array makeObjectsPerformSelector:@selector(eat:) withObject:@"骨头"];

4)可变数组的基本使用

   1:  NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];
   2:      
   3:      // 添加元素
   4:      [array addObject:[[Person alloc] init]];
   5:      
   6:      [array addObject:@"jack"];
   7:      
   8:      // 删除元素
   9:      //[array removeAllObjects];
  10:      // 删除指定的对象
  11:      // [array removeObject:@"jack"];
  12:      [array removeObjectAtIndex:0];
  13:      
  14:      // 错误写法
  15:      // [array addObject:nil];
  16:      
  17:      
  18:      NSLog(@"%@", array);
  19:      
  20:      NSLog(@"%ld", array.count);

5)其他的一些方法

   1:    
   2:      /*
   3:       1.NSArray的创建
   4:       */
   5:      NSArray *array2 = [NSArray arrayWithObject:@"jack"];
   6:      
   7:      // nil是数组元素结束的标记
   8:      NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];
   9:      // [array2 count];
  10:      
  11:      //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];
  12:      
  13:      // 快速创建一个NSArray对象
  14:      NSArray *array4 = @[@"jack", @"rose", @"4324324"];
  15:      
  16:      
  17:      /*
  18:       2.NSArray的元素个数
  19:       */
  20:      NSLog(@"%ld", array3.count);
  21:      
  22:      
  23:      /*
  24:       3.NSArray中元素的访问
  25:       */
  26:      NSLog(@"%@", [array3 objectAtIndex:1]);
  27:      
  28:      //array3[1];
  29:      NSLog(@"%@", array3[0]);

OC语言基础之NSArray的更多相关文章

  1. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  2. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  3. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  4. OC语言基础之代码的封装

    1.封装的注意点 1: // 成员变量尽量不要用@public 2: // @public 3: int age; 1: //@public 2: // 只读(readonly):只允许外界访问我的n ...

  5. 黑马程序员——OC语言Foundation框架 NSArray NSSet NSDictionary\NSMutableDictionary

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一) NSNumber 将各种基本数据类型包装成NSNumber对象 @ ...

  6. OC语言基础之NSDictionary

    1.NSDictionary字典的创建 1: // key value 2: // key -==> value 3: NSDictionary *dict = [NSDictionary di ...

  7. OC语言基础之NSString

    1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...

  8. OC语言基础之利用property优化封装

    1.property功能用法 1: // @property:可以自动生成某个成员变量的setter和getter声明 2: @property int age;//可以直接免去变量的声明 3: // ...

  9. OC语言基础之函数与方法

    方法 1.对象方法都是以减号 - 2.对象方法的声明必须写在@interface和@end之间    对象方法的实现必须写在@implementation和@end之间 3.对象方法只能由对象来调用 ...

随机推荐

  1. OWNER:Java配置文件解决方案 使用简介

    这个感觉还是很方便的一个工具.  学习网站是:http://hao.jobbole.com/owner/ 测试步骤: 1.pom <dependency> <groupId>o ...

  2. session超时设置+超时页面跳转

    session超时设置,方法有三种: (1)在主页面或者公共页面中加入:session.setMaxInactiveInterval(600);参数600单位是秒,即在没有10分钟活动后,sessio ...

  3. TCP(二)

    TCP半连接和全连接问题 TCP握手过程详解 如上图所示,关键部分:syns queue(半连接队列)和accept queue(全连接队列) 正常情况下的处理过程如下: 1)当server端收到cl ...

  4. loj6100 「2017 山东二轮集训 Day1」第一题

    传送门:https://loj.ac/problem/6100 [题解] 我们考虑维护从某个端点开始的最长满足条件的长度,如果知道了这个东西显然我们可以用主席树来对每个节点建棵关于右端点的权值线段树, ...

  5. [Leetcode Week1]Longest Substring Without Repeating Characters

    Longest Substring Without Repeating Characters题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/longes ...

  6. php编译中遇到种种error解决办法

    http://my.oschina.net/maczhao/blog/365176 编译PHP5.5 make 时出现错误 make: *** [ext/fileinfo/libmagic/appre ...

  7. docker从零开始网络(六)Macvlan

    使用Macvlan网络 某些应用程序,尤其是遗留应用程序或监视网络流量的应用程序,希望直接连接到物理网络.在这种情况下,您可以使用macvlan网络驱动程序为每个容器的虚拟网络接口分配MAC地址,使其 ...

  8. Eclipse默认标签TODO,XXX,FIXME和自定义标签

    1 TODO 表示需要实现,但目前还未实现的功能 2 XXX 勉强可以工作,但是需要改进的功能 3 FIXME 代码是错误的,不能工作,需要修复 4.自定义标签 window-->prefere ...

  9. 网络大数据分析 -- 使用 ElasticSearch + LogStash + Kibana 来可视化网络流量

    https://blog.csdn.net/yeasy/article/details/45332493

  10. 解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

    有时候打开AndroidStudio项目,没问题啊,昨天还打开没事的,今天打不开了或者你同步了一下项目,报错了.很无辜有没有.有时候多开机几次,多关几次AS,又莫名好了. 尝试过很多方法无效,这个文章 ...