目录:

一、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 初始化方法

         //NSMutableArray* array = [NSMutableArray array];

         NSMutableArray* array2 = [NSMutableArray arrayWithObjects:@"one",@"two", nil];

         //2 向数组中添加一个元素

         [array2 addObject:@"three"];

         //3 在指定位置添加一个元素

         [array2 insertObject:@"four" atIndex:];

         //4 删除指定下标的元素

         [array2 removeObjectAtIndex:];

         //5 删除指定对象(删除对象的地址)

         [array2 removeObject:@"three"];

         //6 替换指定下标的元素

         [array2 replaceObjectAtIndex: withObject:@""];

         //7 删除数组中所有元素

         [array2 removeAllObjects];

         NSLog(@"%@",array2);

回到顶部

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

1 for循环

2 快速枚举

 //2 forin

         //NSString* str 保存数组元素的变量

         //array 要遍历的数组

         for (NSString* str in array) {

             NSLog(@"arrar:%@",str);

         }

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

(beijing3000,guangzhou2000,shanghai1000)

显示所有城市及人口

只显示北京的人口

3 迭代器遍历

 //* 每个数组和集合都有自己的迭代器

 NSEnumerator* enumer = [array objectEnumerator];

 //* 每次迭代时要发送消息

 //[enumer nextObject]

 //返回当前指向数组中的对象,并且自动向下移动一位,

 //如果没有对象时,则返回nil,且终止迭代

 //向数组中取对象

         id obj;

         while (obj = [enumer nextObject]) {//自动取值,然后向下移动一下

             NSString* str = obj;

             NSLog(@"str:%@",str);

         }//运行此循环的时候先取出一个值,然后向下移动

回到顶部

四、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     查看好友的详细信息

03-Foundation中NSMutableArray遍历、复制和排序的更多相关文章

  1. PAT 甲级 1064 Complete Binary Search Tree (30 分)(不会做,重点复习,模拟中序遍历)

    1064 Complete Binary Search Tree (30 分)   A Binary Search Tree (BST) is recursively defined as a bin ...

  2. 二叉树 排序二叉树-可以通过中序遍历得到排序的数据 二叉排序树时间复杂度O(logn),

    二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 虽然二叉排序树的最坏效率是O(n),但它支持动 ...

  3. Java中常用的6种排序算法详细分解

    排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料. 废话不多说,下面逐一看看经典的排序算法: 1. 选择排序 选择排序的基本思想是遍历数组的过 ...

  4. Team Foundation 中的错误和事件消息

    Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...

  5. 剑指 Offer 03. 数组中重复的数字

    剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知 ...

  6. SQL把表中的数据复制到另一个数据库中

    1 删除整张表的数据,并还原自增长值TRUNCATE TABLE TbWeixinActivity 2 3张表左连接select a.ID,c.Name,b.nickname,a.CreateDate ...

  7. iOS中的深复制与浅复制

    很多语言中都有深复制浅复制的概念,如C++,ObjC等.简单来说,浅复制就是两个变量指向了同一块内存区域,深复制就是两个变量指向了不同的内存区域,但是两个内存区域里面的内容是一样的. 浅复制示意图: ...

  8. 线索化二叉树的构建与先序,中序遍历(C++版)

    贴出学习C++数据结构线索化二叉树的过程, 方便和我一样的新手进行测试和学习 同时欢迎各位大神纠正. 不同与普通二叉树的地方会用背景色填充 //BinTreeNode_Thr.h enum Point ...

  9. Freemarker中如何遍历List

     Freemarker中如何遍历List(附源码) 关键词(Keyword):Freemarker,Freemarker遍历list 在Freemarker应用中经常会遍历List获取需要的数据, ...

随机推荐

  1. sign a third-party dll which don't have a strong name

    Problem: Assembly generation failed -- Referenced assembly '' does not have a strong name Cause: thi ...

  2. 界面调试工具Reveal的使用介绍

    Reveal 注: 此处介绍Reveal,其中大部分内容来自于唐巧的<iOS开发进阶>一书,以此说明. 如何使用Reveal进行模拟器调试,只需进行以下三个步骤即可. 1. 创建.lldb ...

  3. 第一个processing程序(2016-01-15)

    前几天下载和安装了最新的 processing,今天试一下,哈哈,真是简单之极啊,果然是给非程序员使用的,现在,我也是非程序员了.

  4. [Swust OJ 801]--Ordered Fractions

    题目链接:http://acm.swust.edu.cn/problem/801/ Time limit(ms): 1000 Memory limit(kb): 10000   Description ...

  5. Java基础之编程语法(二)

    1.常量: 整型:整数,4个字节. 长整型:整数,8个字节.以L结尾. 单精度浮点数:小数,4个字节.以F结尾. 双精度浮点数:小数,8个字节. 布尔:只有两个值,真(true)或假(false),1 ...

  6. HTML5 总结-表单-表单元素

    HTML5 表单元素 HTML5 的新的表单元素: HTML5 拥有若干涉及表单的元素和属性. 本章介绍以下新的表单元素: datalist keygen output 浏览器支持 Input typ ...

  7. HTML5 画布参考

    描述 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过,<canvas> 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必 ...

  8. 条码知识之九:EAN-128条码(上)

     EAN-128码,现称GS1-128码,是专用于GS1系统中的条码,可以标注商品的附加信息,在商品信息的标识.产品的跟踪与追溯中有广泛的用途. EAN-128码来自于CODE-128码,在字符集.条 ...

  9. mysql merge table

    SELECT COUNT(*) FROM `comment` SHOW CREATE TABLE `comment` CREATE TABLE `comment1` ( `id` INT(8) NOT ...

  10. vc 国际化的资源文件处理

    MS Windows操作系统是一个世界上广泛使用的操作系统,对于不同语种的国家MS Windows有相应语种的版本.在不同语种的Windows平台上应该运行相应语种的应用程序.也就是说程序的用户界面( ...