为什么突然总结这个那?这个还要从昨天面试说起.昨天有个iOS朋友去面试碰到了这样一道题.编程:遍历NSDictionary *dic,并打印出字典的值.首先本身这道题并不难.但是很能体现一个但是你的所书写的代码很能体现你的编程水平小编我第一反应就是最后low的那种做法,首先取得所有的key,然后循环遍历出所有的值.幸亏没去面试,不然丢人丢到家了.
今天我们就跟大家好好总结一下Objective-C中集合对象的遍历方法
NSArray *arrInstance = @[@"xhc", @"lyc", @"son or dautghter"];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"Stout", @"dark", @"Hefeweizen", @"wheat", @"IPA", @"hoppy", nil];
//开始遍历
for (NSInteger i = 0; i < arrInstance.count; i++) {
NSLog(@"%@", arrInstance[i]);
}
NSArray *allKeys = [dictionary allKeys];
for ( NSInteger i = 0; i < dictionary.count; i ++) {
NSLog(@"value = %@", [dictionary valueForKey:allKeys[i]]);
}
//Middle Traverse
for (NSString * obj in arrInstance) {
NSLog(@"%@", obj);
}
for (NSString *key in dictionary) {
NSLog(@"The key is %@, the value is %@", key, [dictionary valueForKey:key]);
}
//high Traverse
[arrInstance enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@", obj);
}];
NSLog(@"******************************************");
[dictionary enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
NSLog(@"key is %@, value is %@", key, obj);
}];
//一些奇巧
//翻转数组
[arrInstance enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"%@", obj);
}];
遍历大致也就这么要说的了。如果大家有更好的办法,欢迎给我留言,大家一块交流,一块进步。在我寻找好的解决方案的时候还是找到了几篇相当不错的文章。这里风向给大家
网友评论