黑马程序员技术交流社区
标题:
关于数组和字典遍历的方法总结
[打印本页]
作者:
马丁
时间:
2015-4-22 15:15
标题:
关于数组和字典遍历的方法总结
总共四种方法,欢迎交流。。。。:):)
//
// main.m
// NSArray-NSDictionary遍历
#import <Foundation/Foundation.h>
int main()
{
// 遍历字典的方法:1.1 1.2 2.1 2.2(错误) 3.0 4.0
NSDictionary *dict = @{@"name": @"jiale", @"address": @"beijing",@"qq": @"630655214"};
// 注意最好不要用下面的value和key作为关键字。
// 1.1 一般遍历(for循环手动索引键)
/*
NSArray *allKeys = dict.allKeys; // 获得所有的键值作为索引。
NSString *value; // id 也可以。 = [NSString string]也可以。
for(NSInteger i = 0; i < allKeys.count; i++) // 注意可以用点语法,说明他们是属性值。
{
value = [dict objectForKey:allKeys[i]];
NSLog(@"%@ %@", allKeys[i], value);
}
*/
// 1.2 一般遍历(for循环手动索引键值)
/*
NSArray *allValues = dict.allValues;
NSArray *key; //注意是数组,对应下面的allKeysForObject。id 也可以。 = [NSArray array]也可以。。
for(NSInteger i = 0; i < allValues.count; i++)
{
key = [dict allKeysForObject:allValues[i]]; // 因为是数组,所以取出它的首元素。
NSLog(@"%@ %@", key[0], allValues[i]);
}
*/
// 2.1 快速遍历(for循环遍历键)
/* for(id key in dict)
{
id value = [dict objectForKey:key]; // 通过键得到键值。
NSLog(@"%@ %@", value, key);
}
*/
// 2.2 快速遍历(for循环遍历键值,该方法错误,只能遍历键)
/*
for(id obj in dict)
{
NSArray *key = [dict allKeysForObject:obj];
NSLog(@"%@ ", obj);
}
*/
// 3.0 利用block超快速遍历,要谨记格式,其返回值为空。
/*
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
NSLog(@"%@ %@", key, value);
}];
*/
// 4.0 利用枚举器遍历(索引得到键,不能得到键值,同方法2.2一个道理。)
/*
NSEnumerator *enumerator = [dict keyEnumerator]; // 相应的,nsarray有-objectEnumerator方法。
id key;
while(key = [enumerator nextObject]) // 注意不要漏了此方法,NSEnumerator 只有一个属
{ // 性allObjects 和一个方法nextObject.
NSLog(@"%@ %@", key, [dict objectForKey:key]);
}
*/
// 遍历数组的方法:
NSArray *arr = @[@"name", @"jiale", @"address", @"beijing",@"qq", @"630655214"];
// 1.0 for循环遍历。
/*
for (int i = 0; i < arr.count; i++) {
NSLog(@"%d %@", i, arr[i]);
}
*/
// 2.0 快速遍历。
/*
for (id obj in arr) {
NSLog(@"%d %@", [arr indexOfObject:obj], obj);
}
*/
// 3.0 利用block遍历。
/*
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%d %@", idx, obj);
}];
*/
// 4.0 利用nsenumerator枚举器遍历。
NSEnumerator *enumerator = [arr objectEnumerator];
id obj;
while (obj = [enumerator nextObject]) {
NSLog(@"%d %@", [arr indexOfObject:obj], obj);
}
return 0;
}
复制代码
作者:
透亮心情
时间:
2015-4-22 17:30
这都oc了,我c都还没有看完!!!!!
作者:
lvzhehappy
时间:
2015-4-22 17:31
给你顶一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2