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

     

 

 

 

  

  

posted @ 2013-11-10 22:43  Mareon  阅读(238)  评论(0编辑  收藏  举报