iphone 开发第五天 - 集合
集合,类似于java中的集合容器,是一类数据结构,能很好的管理和操作数据
1.数组
NSArray 与NSMutableArray,C语言的数组长度不可变,使用起来很麻烦
NSObject ->NSArray - >NSMutableArray
NSString *names[6];//NSString实例数组
NSArray
+(id)arrayWithObject:(id)object
指定对象object,创建实例
使用例子:
NSString *string = @”name“;
NSArray *array = [NSArray arrayWithObject:string];//指定一个对象创建数组
NSArray +(id)arrayWithObjects:(id)firstObj,···
-(id)initWithObjects:(id)firstObj,···
指定多个对象,创建实例,将最后一个参数指定为nil
NSArray *array;
array = [NSArray arrayWithObjects:@"Tom",@"Blacks",@"Smith",nil];
//数组array中含有Tom,Blacks,Smith,千万不要忘记最后一个为nil
数组的长度:NSArray -(unsigned)count 取得数组元素个数
通过索引取得对象:NSArray -(id)objectAtIndex:(unsigned)index ->[array objectAtIndex:1];
例子:for(int i = 0; i< [array count];i++){
NSLog([array objectAtIndex:i]);
}
使用NSEnumerator取得对象,也称为枚举法
NSEnumerator -(id)nextObject 取得当前对象的下一个对象
NSArray -(NSEnumerator *)objectEnumerator 取得枚举对象
例子:
NSArray *array;
array = [NSArray arrayWithObjects:@"Tom",@"Blacks",@"Smith",nil];
NSEnumerator *enumerator;
enumerator = [array objectEnumerator];
NSString *str;
while(str = [enumerator nextObject]){
NSLog(str);
}
高效枚举法:for(变量定义 in 对象集合){
}
for(NSString *str in array){
NSLog(str);}
对象的追加和删除:
创建空数组:NSArray +(id)array 创建内容为空的实例
追加对象的方法在NSMutableArray中定义:
-(void)addObject:(id)object;追加对象object
-(void)addObjectsFromArray:(NSArray *)array 追加数组array中的所有对象
-(void)inertObject:(id)object atIndex:(unsigned)index 在索引index处插入对象object
-(void)replaceObjectAtIndex:(unsigned)index withObject:(id)object 将index处的对象替换成对象object
-(void)setArray:(NSArray *)array 将数组所有的对象替换为数组array中的元素
对象的删除:也在NSMutableArray中定义:
-(void)removeAllObjects 清空
-(void)removeLastObject 删除最后一个
-(void)removeObjectAtIndex:(usigned)index 删除指定位置
-(void)removeObject:(id)object 相同值对象删除
-(void)removeObjectIdenticalTo:(id)object 等价对象删除
-(void)removeObjectsInArray:(NSArray *)array 删除array数组中包含的元素相同的元素
字典类型
NSDictionary,NSMutableDictionary 是键值对集合,一样,前者不可变长,后者可变长
NSObject ->NSDictionary ->NSMutableDictionary
NSDictionary的创建
一个键值对创建NSDictionary实例
NSDictionary +(id)dictionaryWithObject:(id)object forKey:(id)key 一般用到的很少,只有一对
指定多个:
NSDictionary +(id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys
-(id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys
以上是两个士指定值的数组object与键 的数组key创建Dictionary实例
+(id)dictionaryWithObjectsAndKeys:(id)firstObj···
- (id)initWithOjectsAndKeys:(id)firstObj···
以上两个是多个键值对创建NSDictionary实例,最后一个参数必须为nil
下面是例子:
NSArray *keys = [NSArray arrayWithObjects:@"CPU",@"Memory",@"OS",nil];
NSArray *objects = [NSArray arrayWithObjects:@"Core 2 Duo",@"2GB",@"Mac X OS 10.6",nil];
NSDictionary *dict0 = [NSDictionary dicitonaryWithObjects:objects forKeys:keys];//以2个数组形式来创建
NSDicitonary *dict1 ;//以列举键值对的方式创建
dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"CPU",@"Core 2 Duo",@"Memory",@"2GB",@"OS",@"Mac X OS 10.6",nil];
键值的取得:
通过指定键来取得值:NSDictionary -(id)objectForKey:(id)Key 当不存在时返回nil
取得全部的键与值:NSDictionary -(NSArray *)allkeys 以数组的形式返回所有的键
-(NSEnumerator *)keyEnumerator 返回包含所有键的枚举对象
-(NSArray *)allValues 以数组形式返回所有的值
-(NSEnumerator *)valueEnumerator 返回所有值的枚举对象
例子:
NSDictionary *dict = [NSDictionary dictionaryWithObejctsAndKeys:@"Cpu",@"core 2",@"Memory",@"2GB",@"OS",@"Mac",nil];
NSEnumerator *enumerator = [dict keyEnumerator];
NSString *key;
while(key = [enumerator nextObject]){
NSString *value;
value = [dict objectForKey key];
NSLog(@"key is %@,value is%@",key,value);
}
键值追加:
那是必然要用NSMutableDictionary类
生成空字典:继承与NSDictionary的 +(id)dictionary
NSMutableDictionary -(void)setObject:(id)object forKey:(id)key 键值均不为空,键在字典中唯一,若已存在,则删除旧值,追加新值。
删除键值对:
NSMutableDitionary -(void)removeAllObjects 删除所有键值对
-(void)removeObjectForkey:(id)key 删除与key键关联的键值对
-(void)removeObjectsForKeys:(NSArray *)keyArray 删除与键数组keyArray中元素同值 的所有键的键值对
包装类:
包装类,就是包装基本数据类型的,java中也有,把基本数据类型封装成一个类,包装类明儿再学习。。。。
转载于:https://www.cnblogs.com/niwococo/p/3415699.html
iphone 开发第五天 - 集合相关推荐
- iPhone开发视频教程 Objective-C部分 (51课时)
第一.二章 OC基础语法 iPhone开发教程 第一章 OC基础语法 iPhone开发概述-必看(1.1) http://www.apkbus.com/android-102215-1-1.htm ...
- iphone开发笔记和技巧总结
在iphone程序中实现截屏的一种方法: //导入头文件 #importQuartzCore/QuartzCore.h //将整个self.view大小的图层形式创建一张图片imageUIGrap ...
- iphone开发我的新浪微博客户端-用户登录准备篇(1.1)
首先说一下我这个的实现思路,登录支持多个账号,也就是说可以保存多个微博账号登录的时候选择其中一个登录.多个账号信息保存在sqlite的数据库中, 每一个账号信息就是一条记录, 当用户启动微博客户端的时 ...
- iPad开发(相对于iPhone开发时专有的API)
iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...
- iPhone开发教程 UI基础课程(58课时)
qianqianlianmeng iPhone开发教程 UI基础课程(58课时) 第一章 iPhone开发入门 UI基础课程 第一章 iPhone开发入门 1.1 iOS概述和架构 ...
- 学习iPhone开发中 sqlite3的使用
由于我主要负责我们小组项目数据库模块的部分所以这几天都一直在研究在iphone中最为常用的一个简单数据库sqlite,自己也搜集很多资料,因此在这里总结一下这几天的学习成果: 1.Sqlite操作简明 ...
- CSDN上Android与IPhone开发博客精选
Android [1] 张国威:Android从入门到提高系列 前面写了十四篇关于界面的入门文章,大家都看完和跟着练习之后,对于常用的Layout和View都会有一定的了解了,接下来的文章就不再强调介 ...
- iPhone开发部分总结
iphone程序中实现截屏的一种方法 在iphone程序中实现截屏的一种方法: //导入头 文件 #import QuartzCore/QuartzCore.h //将整个self.view大小的图层 ...
- ipad iphone开发_如何在iPhone或iPad上关闭手机数据
ipad iphone开发 If you use an iPhone or iPad (Wi-Fi + Cellular) on the go, you probably rely on cellul ...
最新文章
- linux df是否分区,Linux中df命令查询磁盘信息和fdisk命令分区的用法
- 小学计算机课计划,小学信息技术教学工作计划
- 特征选择常用算法综述
- linux后台运行python脚本
- 转载:使用sklearn进行数据挖掘
- 水晶报表加载失败的解决方法
- 【C++深度剖析教程3】C++中类的静态成员变量
- android textview 背景图片,Android—TextView 背景颜色与背景图片设置
- 关于使用public class 和 class声明类的区别
- MySQL 四种事务隔离级的说明
- 2010年“最具全球竞争力中国公司20强”榜单:
- matlab 化学方程式配平
- bin文件转换成hex的方法
- QT TreeView
- python 操作redis集群
- python列表元素按条件分组_Python列表元素分组
- 做网站必须托管服务器吗,做网站必须托管服务器吗
- 传递矩阵的特征多项式
- 用注销脚本清除上网所留下的痕迹
- 微信投票系统源码--微信投票系统开发功能介绍以及源码分享
热门文章
- python检测excel是否打开_Python判断远程服务器上Excel文件是否被人打开的方法_学领未来...
- 超分辨率分析(四)--Deep Image Prior
- pip 离线安装_安装不上python的模块怎么办?别怕,我这有妙招!
- php中result的值,PHP 返回所取得行中字段的值
- 前端面试每日 3+1 —— 第27天
- ThinkSNS Plus PHP开发概述
- MySQL系列(三)
- python 基本数据类型
- Navicat Win 和 Mac 视图类快捷键对比
- 初始Hibernate-关于hibernate的三种状态