• 03-Foundation中NSMutableArray遍历、复制和排序


    目录:

    一、NSString补充

    二、NSMutableArray可变数组

    三、遍历

    四、NSArray支持的新语法

    五、数组复制

    六、数组的排序

    SDK、API、Foundation、Cocoa是什么?

    SDK Software Development Kit开发工具包,目标文件.o实现库,非开源。

    API Application Program Interface是应用程序接口,是.h文件的声明库。

    Cocoa Foundation框架【API、SDK】、UIKIT框架【API、SDK】

    回到顶部

    一、NSString补充

    1 截取字符串

    * 从指定下标开始,包含开始位置,截取字符串

    SubStringFromIndex从中间到最后

    * 从0开始,到指定位置,不包含指定位置

    SubStringToIndex 从开始到中间

    * 指定范围截取字符串

    SubStringWithRange

    2 字符串大小写转换

    * 将所有的字符串内容变为大写

    uppercaseString 会创建一个新的字符串

    * 将所有的字符串内容变为小写

    lowercaseString

    * 将单词的首字母大写

    capitalizedString

    3 得到字符串的前缀和后缀

    TRStudent.h

    如果一个字符串是文件名,可以得到这个字符串的前缀和后缀。

    * 判断一个文件是否有某个前缀,返回布尔类型

    BOOL b = [str hasPrefix:@"TR"]

    * 判断一个文件是否有某个后缀,返回布尔类型

    BOOL b = [str hasSuffix:@".h"]

    回到顶部

    二、NSMutableArray可变数组

     1         //1 初始化方法
     2 
     3         //NSMutableArray* array = [NSMutableArray array];
     4 
     5         NSMutableArray* array2 = [NSMutableArray arrayWithObjects:@"one",@"two", nil];
     6 
     7         //2 向数组中添加一个元素
     8 
     9         [array2 addObject:@"three"];
    10 
    11         //3 在指定位置添加一个元素
    12 
    13         [array2 insertObject:@"four" atIndex:2];
    14 
    15         //4 删除指定下标的元素
    16 
    17         [array2 removeObjectAtIndex:2];
    18 
    19         //5 删除指定对象(删除对象的地址)
    20 
    21         [array2 removeObject:@"three"];
    22 
    23         //6 替换指定下标的元素
    24 
    25         [array2 replaceObjectAtIndex:1 withObject:@"2"];
    26 
    27         //7 删除数组中所有元素
    28 
    29         [array2 removeAllObjects];
    30 
    31         NSLog(@"%@",array2);

    回到顶部

    三、遍历(三种遍历方式)

    1 for循环

    2 快速枚举

     1 //2 forin
     2 
     3         //NSString* str 保存数组元素的变量
     4 
     5         //array 要遍历的数组
     6 
     7         for (NSString* str in array) {
     8 
     9             NSLog(@"arrar:%@",str);
    10 
    11         }

    练习:National类(名称China)拥有多个地区,地区Area(名称、人口)。创建三个地区

    (beijing3000,guangzhou2000,shanghai1000)

    显示所有城市及人口

    只显示北京的人口

    3 迭代器遍历

     1 //* 每个数组和集合都有自己的迭代器
     2 
     3 NSEnumerator* enumer = [array objectEnumerator];
     4 
     5 //* 每次迭代时要发送消息
     6 
     7 //[enumer nextObject]
     8 
     9 //返回当前指向数组中的对象,并且自动向下移动一位,
    10 
    11 //如果没有对象时,则返回nil,且终止迭代
    12 
    13 //向数组中取对象
    14 
    15         id obj;
    16 
    17         while (obj = [enumer nextObject]) {//自动取值,然后向下移动一下
    18 
    19             NSString* str = obj;
    20 
    21             NSLog(@"str:%@",str);
    22 
    23         }//运行此循环的时候先取出一个值,然后向下移动

    回到顶部

    四、NSArray支持的新语法

    1 ios6.0及osx10.8之后,编译器LLVM编译支持

    2 初始化数据

    OC:[NSArray arrayWithObjects:@"a",@"b",nil]

    OC新语法:NSArray* array = @[@"a",@"b"];

    3 根据下标得到数组中的元素的值

    OC:[array objictAtIndex:0];

    OC新语法:array[0];

    回到顶部

    五、数组复制

    1 分深拷贝(内容复制)、浅拷贝(引用复制)

    2 复制对象:指针复制(浅拷贝)、内容复制(深拷贝)

    3 数组中的元素,对象的引用

    4 浅拷贝:新数组和原有数组共享内存中的对象

    NSArray* array2 = [[NSArray alloc] initWithArray:array copyItems:NO];

    5 深拷贝:新数组和原有数组都有独享的对象

    NSArray* array3 = [[NSArray alloc] initWithArray:array copyItems:YES];

    注:深拷贝数组的对象必须遵守NSCopying协议,并且实现copyWithZone方法,如果不但想复制对象,还要复制对象的值,要添加有参的copyWithZone方法

    回到顶部

    六、数组的排序

    1 可以让数组中的对象按照一定规则进行排序

    2 类必须实现compare方法(排序的规则)

    3 规则原理:0相等 -1升序 1降序

    4 发送排序消息

    NSArray* array2 = [array sortedArrayUsingSelector:@selector(compare:)];

    练习:创建5个学生对象,按姓名排序

         作业:1.按年龄排序升序、降序。

                  2.先年龄升序再按姓名升序(年龄相等的人,再按姓名排序)

         作业:

          联系人信息:TelphoneInfo 1

               name:ysy 2             谁的联系人信息

               userInfos:  2            所有好友信息

               -addUserInfo   3     添加好友

               -removeUser    7    删除好友

               -lookupUserInfoByName  6查找好友信息

                -list 4            查看所有好友信息

               -sort   5                   查看所有好友信息排序

     

          个人信息:UserInfo 1

               name:2         好友的姓名

               email:2      

               telphone:2

               -showInfo;3     查看好友的详细信息

  • 相关阅读:
    当用户登录,经常会有实时的下拉框,例如,输入邮箱,将会@qq.com,@163.com,@sohu.com
    《SAS编程和数据挖掘商业案例》学习笔记# 19
    CareerCup它1.8 串移包括问题
    ERDAS遥感图像配准、及其它一些基本处理
    ENVI裁剪
    【转】Points To Line
    【转】Python IDE for Eclipse
    [转] Download Images from Multiple Maps
    Matlab splinetx
    jquery 元素控制(附加元素/其他内容)引进和应用
  • 原文地址:https://www.cnblogs.com/yangmx/p/3495638.html
Copyright © 2020-2023  润新知