// 先分別初始化數組、字典和集合,然后分別用for循環、NSEnumerator枚舉器和forin循環這三個方法來實現遍歷
NSArray *array = @[@"yinhao", @"yinxiao", @"yinshuanghao", @"yindongdong"];
NSDictionary *dict = @{
@"name" : @"LeBron",
@"age" : @30,
@"sex" : @"男",
@"hobby" : @"NBA"
};
NSSet *set = [NSSet setWithObjects:@"genie", @"weizhuang", @"tianming", @"shaoyu", @"高月", @"shilan", nil];
/**
* 1.for循環遍歷
*/
// for循環遍歷數組
for (NSUInteger i = 0; i < array.count; i++) {
// 根據數組下標訪問相應的元素
//NSString *str = [array objectAtIndex:i];
NSString *str = array[i]; // 兩種方法一樣的
NSLog(@"%@", str);
}
// for循環遍歷字典
// 獲取字典中所有的key值
NSArray *keys = [dict allKeys];
// 遍歷keys數組,訪問相應的value值
for (NSUInteger i = 0; i < keys.count; i++) {
// 通過下標獲取每個key值
NSString *key = keys[i];
//id value = [dict objectForKey:key];
id value = dict[key]; // 兩種方法一樣的
NSLog(@"%@", value);
}
// for循環遍歷集合
// 取出所有元素存放在數組中
NSArray *setArray = [set allObjects];
for (NSUInteger i = 0; i < setArray.count; i++) {
//NSLog(@"%@", setArray[i]);
NSLog(@"%@", [setArray objectAtIndex:i]); // 兩種方法一樣的
}
/**
* 2.NSEnumerator 枚舉器遍歷
*/
// NSEnumerator 遍歷數組(正序)
// 創建正序的枚舉器對象
NSEnumerator *arrayEnum = [array objectEnumerator];
id value = nil; // 存儲數組中的元素對象
// 判斷value不為空打印數據
while ((value = [arrayEnum nextObject]) != nil) {
NSLog(@"%@", value);
}
// NSEnumerator 遍歷數組(倒序)
// 創建倒序的枚舉器對象
NSEnumerator *arrayEnum1 = [array reverseObjectEnumerator];
id value1 = nil;
while (value1 = [arrayEnum1 nextObject]) {
NSLog(@"%@", value1);
}
// NSEnumerator 遍歷字典
// 遍歷到的是字典中的object值,字典中存放的數據是無序的,沒有反向枚舉的概念
NSEnumerator *dictEnum = [dict objectEnumerator];
id value2 = nil; // 存儲字典中的value數據
while (value2 = [dictEnum nextObject]) {
NSLog(@"%@", value2);
}
// NSEnumerator 遍歷集合
// 遍歷到的是集合中的object值,集合中存放的數據也是無序的,也沒有反向枚舉的概念
NSEnumerator *setEnum = [set objectEnumerator];
id value3 = nil; // 存儲集合中的value數據
while (value3 = [setEnum nextObject]) {
NSLog(@"%@", value3);
}
// NSEnumerator遍歷,不能刪除其中的元素,使用for循環遍歷數組可以修改其中的內容
// 以下兩種刪除或者修改數組中某個元素,只能通過for循環遍歷數組來修改,不能使用NSEnumerator遍歷來刪除或修改
NSMutableArray *mArray = [NSMutableArray arrayWithArray:array];
NSEnumerator *arrayEnum2 = [mArray objectEnumerator];
id value4 = nil;
while (value4 = [arrayEnum2 nextObject]) {
if ([value4 isEqualToString:@"yindongdong"]) {
[mArray removeObject:value4];
NSLog(@"%@", value4);
}
NSLog(@"%@", value4);
}
NSMutableArray *mArray1 = [NSMutableArray arrayWithArray:array];
for (int i = 0; i < mArray1.count; i++) {
if ([mArray1[i] isEqualToString:@"yindongdong"]) {
[mArray1 removeObject:mArray1[i]];
}
}
NSLog(@"%@", mArray1);
/**
* 3.for...in遍歷
*/
// for...in遍歷數組
for (NSString *str in array) {
NSLog(@"%@", str);
}
// for...in遍歷字典 (得到key,根據key訪問value)
for (NSString *key in dict) {
NSLog(@"%@", dict[key]); // 兩種方法一樣
//NSLog(@"%@", [dict objectForKey:key]);
}
// for...in遍歷集合 (等到集合中的元素對象)
for (id obj in set) {
NSLog(@"%@", obj);
}