您的位置:首页 > 移动开发 > Objective-C

Objective-C(十二、快速枚举,枚举器NSEnumerator和集合类NSSet)——iOS开发基础

2015-07-04 15:27 393 查看
结合之前的学习笔记以及参考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~

十二、快速枚举,枚举器和集合类NSSet

注意:下面的所提及的方法都是常用方法,全部列出不大现实,参考Xcode帮助文档即可~

1、遍历、快速遍历

(1)普通遍历:

for (NSUInteger i = 0; i < array.count; i++) {
     NSLog(@"%@", array[i]);
 }


(2)快速遍历

for (id obj in array) {
    NSLog(@"%@", obj);
 }


快速遍历(快速枚举)语法

for( 变量 in 集合 ) {
     相应的处理
 }


集合可以是可变集合也可以是不可变,但是可变集合在循环过程中不允许改变,否则会抛出异常

2、枚举器NSEnumerator

(1)基础知识:用来遍历集合类重元素对象的抽象类

(2)常用方法

- (id)nextObject;                          //一次遍历每个元素,结束返回nil,通常与while结合使用遍历所有项
- (NSArray *)allObjects;                   //返回集合中未被遍历的所有元素
- (NSEnumerator *)objectEnumerator;        //顺序遍历的枚举其
- (NSEnumerator *)reverseObjectEnumerator; //逆序遍历的枚举器


array4还是前一篇章十一中的定义,由于前一篇篇幅过长,因此分来两部分。

NSEnumerator *enumerator = [array4 reverseObjectEnumerator];
 id object;
 while ((object = [enumerator nextObject]) != nil) {
     NSLog(@"%@",object);
 }


output:

<MusicPlayer: 0x100406710>
 obj2
 1


(3)与for…in语法结合

NSEnumerator *enumerator = [array4 reverseObjectEnumerator];
 id object;
 for (object in enumerator) {
     NSLog(@"%@",object);
 }


output:

<MusicPlayer: 0x100106870>
obj2
 1


3、NSSet(单值对象的集合

(1)NSSet与NSArray的异同

共同点:都是集合,能存放多个OC对象,且只能存放OC对象

不同点:NSArray有序排列,NSSet元素无序列排列;NSArray可容纳重复的对象,NSset不能重复,重复时前者会被替换。

(2)





(3)常用方法

初始化

+ (instancetype)set;
 + (instancetype)setWithObject:(id)object;
 - (instancetype)initWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;
 - (instancetype)initWithArray:(NSArray *)array;    //array中有重复,只保存一个


其他

- (NSUInteger)count;
 - (NSArray *)allObjects;                           //将集合对象中所有元素以数组形式返回
 - (void)addObject:(id)object;                      //从集合中随机抽取一个元素
 - (BOOL)containsObject:(id)anObject;
 - (BOOL)intersectsSet:(NSSet *)otherSet;           //是否有共同的元素
 - (BOOL)isEqualToSet:(NSSet *)otherSet;            //两个集合是否相等
 - (BOOL)isSubsetOfSet:(NSSet *)otherSet;           //当前集合是否全部位于集合otherSet中


(4)NSMutableSet常用方法

- (void)addObject:(id)object;
 - (void)removeObject:(id)object;
 - (instancetype)initWithCapacity:(NSUInteger)numItems NS_DESIGNATED_INITIALIZER;
 - (void)unionSet:(NSSet *)otherSet;        //合并另个集合
 - (void)intersectSet:(NSSet *)otherSet;    //生成另个集合的交集
 - (void)minusSet:(NSSet *)otherSet;        //从当前集合中删除同otherSet共同的元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: