iOS中得Collection主要包括 NS(Mutable)Dictionary,NS(Mutable)Array和NS(Mutable)Set。
下面简单介绍一下遍历这些collection的四种方法。
1.for循环
这种是最常见的遍历方式,几乎所有编程语言都支持该方式
for(int i = 0; i<[arr length] ; i++){
//do something
[arr objecAtIndex:i];
}
2.快速遍历
快速遍历是某些特有的语言中得特性,我所知道的就是java和oc中有这种方式
<pre name="code" class="objc">NSArray * arr = [NSArray alloc] init];
for(id object in arr){
//do something on object;
}
<pre name="code" class="objc">NSArray * arr = [NSArray alloc] init];
for(id object in arr){
//do something on object;
}
关键语法 for in,这种方式可以快速的进行collection遍历,且语法简单。但是这种方式的缺点就是不能得到当前遍历的下标
3.NSEnumerator
NSEnumerator和Java语言的Iterator很像,就是得到当前collection的迭代器,然后利用这个迭代器进行遍历
NSArray * arr = [[NSArray alloc] init];
NSEnumerator * enuratorArr = [arr objectEnumerator];
id object;
while ((object = [enuratorArr nextObject])) {
//do something with object
}
NSDictionary * dic = [[NSDictionary alloc] init];
NSEnumerator * enumratorDic = [dic objectEnumerator];
NSSet * set = [[NSSet alloc] init];
NSEnumerator * enuratorSet = [set objectEnumerator];
4.enumerateKeysAndObjectsUsingBlock
最后一种遍历方式
NSArray * arr = [[NSArray alloc] init];
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//obj
//idx
//stop
}];
NSDictionary * dic = [[NSDictionary alloc] init];
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
//key
//obj(value)
//stop
}];
[dic enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id key, id obj, BOOL *stop) {
//NSEnumerationReverse 是反序遍历,这种方式可以选择遍历方式
//其他同上
}];