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中也有,把基本数据类型封装成一个类,包装类明儿再学习。。。。