03-Foundation中NSMutableArray遍历、复制和排序
目录:
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遍历、复制和排序的更多相关文章
- PAT 甲级 1064 Complete Binary Search Tree (30 分)(不会做,重点复习,模拟中序遍历)
		
1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a bin ...
 - 二叉树 排序二叉树-可以通过中序遍历得到排序的数据 二叉排序树时间复杂度O(logn),
		
二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加.但是他也有自己的缺点:删除操作复杂. 虽然二叉排序树的最坏效率是O(n),但它支持动 ...
 - Java中常用的6种排序算法详细分解
		
排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料. 废话不多说,下面逐一看看经典的排序算法: 1. 选择排序 选择排序的基本思想是遍历数组的过 ...
 - Team Foundation 中的错误和事件消息
		
Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...
 - 剑指 Offer 03. 数组中重复的数字
		
剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知 ...
 - SQL把表中的数据复制到另一个数据库中
		
1 删除整张表的数据,并还原自增长值TRUNCATE TABLE TbWeixinActivity 2 3张表左连接select a.ID,c.Name,b.nickname,a.CreateDate ...
 - iOS中的深复制与浅复制
		
很多语言中都有深复制浅复制的概念,如C++,ObjC等.简单来说,浅复制就是两个变量指向了同一块内存区域,深复制就是两个变量指向了不同的内存区域,但是两个内存区域里面的内容是一样的. 浅复制示意图: ...
 - 线索化二叉树的构建与先序,中序遍历(C++版)
		
贴出学习C++数据结构线索化二叉树的过程, 方便和我一样的新手进行测试和学习 同时欢迎各位大神纠正. 不同与普通二叉树的地方会用背景色填充 //BinTreeNode_Thr.h enum Point ...
 - Freemarker中如何遍历List
		
 Freemarker中如何遍历List(附源码) 关键词(Keyword):Freemarker,Freemarker遍历list 在Freemarker应用中经常会遍历List获取需要的数据, ...
 
随机推荐
- JavaScript 数字相关的转换和方法
			
类型判断 isNaN - 是否是 NaN(Not a Number).主要用来判断 NaN 是否是 NaN,因为 NaN == NaN 是 false. isNaN(NaN); // tr ...
 - 读书笔记之MERGE 语句使用
			
常用语法 MERGE INTO <target table> AS TGT USING <SOURCE TABLE> AS SRC ON <merge predicate ...
 - JSP内置对象---application
			
application 对象 服务器启动后,就产生了application 对象.当一个客户访问服务器上的一个JSP 页面时,JSP 引擎为该客户分配这个application 对象, 当客户在 ...
 - Zend Studio 如何配置本地apache服务器使用xdebug调试php脚本
			
本地环境搭配: apache 2.2 安装位置:D:/program files/Apache Software Foundation/Apache2.2 php 5.2.10 安装位置:C:/php ...
 - Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)
			
QT通过三种形式提供了对线程的支持.它们分别是, 一.平台无关的线程类 二.线程安全的事件投递 三.跨线程的信号-槽连接. 这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线 ...
 - struts.xml的配置
			
<?xml version="1.0" encoding="UTF-8"?> <!--第一行必须这样写,这句话必须放在第一行--> &l ...
 - cmake 学习笔记(四)
			
接前面的一二三,学习一下 CMakeCache.txt 相关的东西. CMakeCache.txt 可以将其想象成一个配置文件(在Unix环境下,我们可以认为它等价于传递给configure的参数). ...
 - 最小生成树Prim算法
			
文章作者:甘航 文章来源:http://www.cnblogs.com/ganhang-acm/转载请注明,谢谢合作. 由于数据结构老师布置的一道题 ,我看prim算法看了半天还是一知半解. 在浏览 ...
 - Battle ships(二分图,建图,好题)
			
Battle ships Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...
 - HDU 5091  线段树扫描线
			
给出N个点.和一个w*h的矩形 给出N个点的坐标,求该矩形最多能够覆盖多少个点 对每一个点point(x.y)右边生成相应的点(x+w,y)值为-1: 纵向建立线段树,从左到右扫描线扫一遍.遇到点则用 ...