Objective-C 日记④ 集合家族
2012-08-25 00:34
447 查看
一、NSArray
NSArray是Cocoa的一个类,用来存储对象的有序列表。限制:
1、只能存储Object-C的对象,不能存储C语言中的基本数据类型,如:int、float、enum、struct或者NSArray中的随机指针;
2、不可以存储nil(对象的零值或NULL值);至于为什么继续向下看
如何创建?
通过类arrayWithObjects创建NSArray,以逗号分隔对象列表,在列表尾部添加nil代表列表结束(这就是不能在数组中存储nil的第一个原因(第二个继续向下))
可以使用NSNull代表没有值 +(NSNull *) null;
NSArray *array; array=[NSArray arrayWithObjects:@"1",@"2",@"3",nill];
数组对象个数:-(unsigned) count;
根据索引获取对象:-(id)objectAtIndex:(unsigned int)index;
eg:
#import<Foundation/Foundation.h> int main(int argc,const char *argv) { NSArray *array; array=[NSArray arrayWithObjects:@"1",@"2",@"3",nil]; int i; for(i=0;i<[array count];i++) { NSLog(@"第 %d 是:%@",i,[array objectAtIndex:i]); } }
效果:
切分数组
使用-componentsSeparatedByString来切分NSArray
NSString *string=@"kaka:18:PEPE:20";
NSLog(@"没改变之前的我:%@",string);
NSArray *array=[string componentsSeparatedByString:@":"]; [kəm'pəunənt] adj. 组成的,构成的n. 成分;组件;元件 ['sepəreit, 'sepərit]vt. 使分离;使分开;使分居
使用componentsJoinedByString来合并NSArray中的元素并创建字符串
string=[array componentsJoinedByString:@"*"];
NSLog(@"改变之后的我:%@",string);
eg:
二、可变数组NSMutableArray
NSString有一个可变字符串NSMutableString同理数组NSArray也有一个可变数组NSMutableArray创建方式同NSMutableString 如下:+(id)arrayWithCapacity:(unsigned)numitems
eg:
NSMutableArray *array2 ; array2=[NSMutableArray arrayWithCapacity:17]; NSArray *array3=[NSArray arrayWithObjects:@"one",@"two",@"three",nil]; [array2 addObject:array3]; int i; for( i=0;i<[array2 count];i++) { NSLog(@"第 %d 是:%@",i,[array2 objectAtIndex:i]); }
效果:
删除:-(void)removeObjectAtIndex:(unsigned)index;
三、枚举王国
NSEnumerator它是Cocoa用来描述集合迭代运算的方式,可以通过objectEnumerator向数组请求枚举器:-(NSEnumerator *)objectEnumerator;
eg:
#import<Foundation/Foundation.h> int main(int argc,const char *argv) { NSArray *array; array=[NSArray arrayWithObjects:@"A",@"B",@"C",nil]; NSEnumerator *enumerator; enumerator=[array objectEnumerator]; id thing; //nextObject返回nil值时表示循环结束 while(thing=[enumerator nextObject]){ NSLog(@"I found %@",thing); } //reverseObjectEnumerator从后向前浏览集合 enumerator= [array reverseObjectEnumerator]; while(thing=[enumerator nextObject]){ NSLog(@"I found %@",thing); } }
效果:
注意:
1、xtObject返回nil时表示循环结束这也是数组NSArray不能有nil的第二个原因
2、不可以通过添加或者删除对象的方式来改变数组容器
四、快速枚举
书上说是这样子的:NSString *string; for( string in array){ NSLog(@"I found %@",string); }
可是我是Nodepad++ vs GNU 可能如书上所说这是一个新特性,运行不了;适合在Leopard或更高级版本的系统上运行程序
总结:
介绍了三种方式遍历数组:索引、NSEnumerator、快速枚举
如果你的系统是高版本的操作系统或者是Leopard ['lepəd]n. 豹;美洲豹的那么选择第三种快速枚举.原因很简单就是快速简洁。
五、字典(又称:散列表、关联数组)
NSDictionary:在给定的关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的的对象)。字典和数组都可以存储数据,但是对于频繁的查询大型的数据集来说使用字典的效率更高因为字典是键查询的优化存储方式,可以立即查找出要查询的数据,而不需要循环整个数组进行查询数据
使用类方法dictionaryWithObjectsAndKeys来创建字典,以nil值作为终止符号
+(id)dictionaryWithObjectsAndKeys:(id)firstObject,……
相关文章推荐
- objective-c 基础教程 读书笔记之第八章集合家族简介,NSArray,NSDictionary
- objective-c之集合家族
- 5.21 Objective-C中的集合类
- Objective-C---5---字典,集合
- 黑马程序员--Java学习日记之集合(collection类和map类代码)
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十五章 数字 字符串和集合
- java学习日记_76:集合框架之Collection类
- IOS开发之路-Objective-C 集合上(笔记)
- Objective-C 的基本数据类型、数字、字符串和集合等介绍
- 黑马程序员 日记六:集合的学习总结
- 方法集合话说我打算一天学完object c语法,系列3--------来自书Objective-c程序设计
- Objective-C集合总结
- Objective-C Foundation框架 字符串、集合
- ios swift学习日记5-集合类型
- 黑马程序员——学习日记8——集合框架
- 【笨鸟先飞】Java重新学习日记7---高级数组之集合
- 黑马程序员_学习日记七_集合二
- Objective-C集合遍历的几种方式
- 菜鸟日记之 java中的集合框架
- java学习日记_78:集合框架之List特有迭代器的使用