一、枚举:NSEnumerator

  • 依附于集合类(NSArray,NSSet,NSDictionary),没有用来创建实例的接口。
  • NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项
  • 对可变数组进行枚举操作时,不能通过添加或删除对象这类方式来改变数组容器。

创建枚举:向容器类对象请求枚举器

-(NSEnumerator *)objectEnumerator;

代码实例:

    NSEnumerator *enumerator;
    enumerator =[array objectEnumerator];


浏览集合类对象的全部元素 

-(id)nextObject;

代码实例:

    NSEnumerator *enumerator;
    enumerator =[array objectEnumerator];
    id thingie;
    while (thingie = [enumerator nextObject])
    {
        NSLog(@"i found %@",thingie);
    }

二、字典NSDictionary

字典就是关键字及其定义的集合,也称散列表或关联数组。

是在给定关键字(常为NSString类型的对象)下存储一个数值(任何类型的对象)。

使用键查询的优化存储方式,可立即找出要查询的数据,不需遍历整个数组进行查询。

对于频繁查询和大型数据集来说,使用字典比较数组要快很多。

创建字典:

+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...(可变参) 

需提供该字典所需要的全部对象和关键字,因为只有可读属性,只能在初始化的时候进行赋值。

获取字典中的值:

- (id)objectForKey:(id)aKey;


三、创建 NSMutableDictionary

向类发送dictionary消息

+ (id)dictionaryWithCapacity:(NSUInteger)numItems;

仅仅是一个建议,而不是对大小的限制

添加元素:

- (void)setObject:(id)anObject forKey:(id)aKey;

若已经存在关键字,则用新值替换原有的值。

删除元素:

- (void)removeObjectForKey:(id)aKey;


类簇(cu)

注意:


不要创建NSString,NSArray,NSDictionary的子类。

在cocoa中,许多类实际上是以类簇的方式实现的,即他们是一群隐藏在通用接口之下的与实现相关的类。


本章总结:

掌握数组的基本操作

掌握可变数组的基本操作

掌握枚举的基本操作

了解快速枚举的基本操作

掌握字典的基本操作

掌握可变字典的基本操作


代码:

#import <Foundation/Foundation.h>

@interface Tire : NSObject {

}
@end

@implementation Tire

@end

int main (int argc, const char * argv[])
{
    //字符串变数组
    NSString *string = [[NSString alloc]initWithString:@"one,two"];
    NSLog(@"string:%@",string);
    
    NSArray *array = [string componentsSeparatedByString:@","];
    NSLog(@"array:%@",array);
    
    [string release];
   //数组变字符串
    NSString *string1 = [array componentsJoinedByString:@","];
    NSLog(@"string1:%@",string1);
    
    [string1 release];
    
    //枚举
    NSEnumerator *enumerator;
    enumerator =[array objectEnumerator];
    id thingie;
    while (thingie = [enumerator nextObject])
    {
        NSLog(@"i found %@",thingie);
    }
    
    Tire *tires[4];
    for(int i=0;i<4;i++)
        tires[i] = [Tire new];
    
    //字典
    NSDictionary *tire;
    tire = [NSDictionary dictionaryWithObjectsAndKeys:
                                                    tires[1],@"1",
                                                    tires[2],@"2",
                                                    tires[3],@"3",
                                                    tires[0],@"4",
                                                    nil];
    
    //可变字典
    NSMutableDictionary *kbdtire;
    kbdtire = [NSMutableDictionary dictionary];//?????
    
    [kbdtire setObject:tires[0] forKey:@"0"];//添加元素
    [kbdtire setObject:tires[1] forKey:@"1"];
    [kbdtire setObject:tires[2] forKey:@"2"];
    [kbdtire setObject:tires[3] forKey:@"3"];
    
    [kbdtire removeObjectForKey:@"0"];//删除元素
    
    return 0;
}










Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐