代码改变世界

用于收集CoCoa对象的集合即有关Objective-C数组的操作

2011-12-28 16:29  张智清  阅读(737)  评论(1编辑  收藏  举报

Foundation Framework框架中用于收集CoCoa对象的三种集合:

  • NSArray 数组 用于对象有序集合
  • NSSet    集合 用于对象无序集合
  • NSDictionary  字典 用于键值(Key/Value)映射

以上三种集合类是不可变的(一旦初始化后,就不能改变)。因此对应的另有三种可变集合类NSMutableArrayNSMutableSetNSMutableDictionary所有这些(六大)集合类都只能收集CoCoa对象(NSObject对象)而已

NSArray
基本方法:
+ (id)arrayWithObjects:(id)firstObject,...,nil;  //可由一个个数据项创建一个自动释放的NSArray

- (int)count;   //得到array中的对象个数

- (id)objectAtIndex:(int)index;    //获取索引为index的对象

- (BOOL)containsObject:(id)anObject;  //当anObject出现在array中,则返回YES

- (unsigned)indexOfObject:(id)anObject;  //查找array中anObject,并返回其最小索引值。没找到返回NSNotFound。

- (void)makeObjectsPerformSelector:(SEL)aSelector;

- (NSArray *)sortedArrayUsingSelector:(SEL)aSelector;

- (id)lastObject;    //得到array中最后一个对象。如果array中没有任何对象存在,则返回nil。

NSSet
基本方法:
+ setWithObjects:(id)firstObject,...,nil;

- (int)count;

- (BOOL)containsObject:(id)anObject;

- (id)anyObject;

- (void)makeObjectsPerformSelector:(SEL)aSelector;

- (id)member:(id)anObject;

NSDictionary
一个NSDictionary对象就是Key/Value对的集合。Key是字符串(NSString),Value是对象指针。
Key在整个NSDictionary对象中是唯一的。通过方法objectForKey:可以获得对应于某个Key键的一个或多个Value值。NSDictionary在创建时,其中所有的Key与其对应的Value都是存在并一一对应。
基本方法:
+ dictionaryWithObjectsAndKeys:(id)firstObject,...,nil;   //参数是一个key,一个值。成双出现。

- (int)count;    //返回有多少对Key/Value

- (id)objectForKey:(id)Key;  //返回此Key相关联的Value。没有则返回nil。

- (NSArray *)allKeys     //返回一个包含所有Key的数组

- (NSArray *)allValues;   //返回一个包含所有Value的数组

- (NSEnumerator *)keyEnumerator;   //从一个dictionary中得到一个Key的迭代器

如列举所有的Key/Value对

NSEnumerator *enum = [myDictionary keyEnumerator];
for(NSString *s in enum) {
NSLog(@"key is %@, value is %@",s,[myDictionary objectForKey:s]);
}

注意:NSArray也有一个类似方法得到array的成员迭代器,就是objectEnumerator方法。