容器类对象:枚举 NSEnumerator、字典
一、枚举:NSEnumerator依附于集合类(NSArray,NSSet,NSDictionary),没有用来创建实例的接口。NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。对可变数组进行枚举操作时,不能通过添加或删除对象这类方式来改变数组容器。创建枚举:向容器类对象请求枚举器-(NSEn
一、枚举: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;
}
更多推荐
所有评论(0)