// 集合的遍历 NSSet(集合)
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"11", @"a", @"22", @"b", @"33", @"c", nil];
NSLog(@"%@", dictionary);
for (int i = 0; i < dictionary.count; i++) {
// 先根据allKeys以及下标i取出key值
NSString *key = [dictionary.allKeys objectAtIndex:i];
NSLog(@"%@", [dictionary objectForKey:key]);
// NSLog(@"%@", key);
// NSString *value = [dictionary.allValues objectAtIndex:i];
// NSLog(@"%@", value);
}
// for in 遍历 (OC一般用它就够了)
NSArray *array = @[@"q", @"w", @"e", @"r", @"d", @"f"];
for (NSString *str in array) {
NSLog(@"%@", str);
}
NSMutableArray *array1 = [NSMutableArray arrayWithArray:array];
for (NSString *str1 in array) {
NSLog(@"%@", str1);
if ([str1 isEqualToString:@"w"]) {
[array1 replaceObjectAtIndex:[array1 indexOfObject:str1 ] withObject:@"ww"];
}
// 男神小贴士: 使用for in 循环遍历集合的时候,不能修改 “正在” 遍历的集合
// 当涉及到需要修改正在循环的集合可以复制一份,循环复制出的一份,而修改自己本身
}
for (NSString *str in array1) {
NSLog(@"%@", str);
}
// NSEnumerator -- 枚举遍历
//正序遍历 和 倒序遍历
// NSEnumerator *arrayEnume = [array1 objectEnumerator]; // 正序
NSEnumerator *arrayEnume = [array1 reverseObjectEnumerator]; // 倒序
// 取对象
NSString *str = nil;
while (str = [arrayEnume nextObject]) {
NSLog(@"��%@", str);
}
// 排序
NSArray *sortArray = @[@"1", @"2", @"3", @"4", @"7"];
// NSSortDescriptor -- 排序描述符 (老三步)
NSSortDescriptor *des = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES]; // YES-升序 NO-降序
// Key -- 对象内属性对应的键值,字符串这样的对象使用nil
// 常见存储描述的数组 (可以添加多个限定条件,比如按姓名排序,然后按年龄)
// 排序并承接完成排序的数组
// 不可变数组的方法
// NSArray *descriptors = [NSArray arrayWithObject:des];
NSArray *over = [sortArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:des]];
NSLog(@"%@", over);
// 可变数组
NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:sortArray];
// 可变数组可以改变自身
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:des]];