NSEnumerator 数组便利
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd", nil];
//获取数组的正序枚举器
NSEnumerator *enu = [array objectEnumerator];
id value = nil;
//如果value不为nil 则继续 如果枚举的当前对象为nil 则表示数组结束 value值为nil 跳出while循环
while (value = [enu nextObject]) {
NSLog(@"%@", value);
}
//逆向枚举
NSEnumerator *reverseEnu = [array reverseObjectEnumerator];
while (value = [reverseEnu nextObject]) {
NSLog(@"%@", value);
}
//☀️ NSEnumerator 字典便利
NSDictionary *dictionary = @{@"key1":@"value1", @"key2":@"value2", @"key3":@"value3"};
NSEnumerator *enumerator = [dictionary objectEnumerator]; //获取枚举器对象
id value = nil; //存储字典中的value
while ((value = [enumerator nextObject])) {
NSLog(@"%@", value);
}
//forin 便利字典
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"张",@"name",@"男",@"sex", nil];
//
// for (NSString *str in dic) {
// NSLog(@"%@ %@", str, dic[str]);
// }
// ☀️ NSSortDescriptor 不可变数组排序 便利
可变数组 sortUsingDescriptors
不可变数组排序方法, sortedArrayUsingDescriptors
NSArray *array1 = [NSArray arrayWithObjects:@"2",@"5",@"3",@"1", nil];
NSSortDescriptor *acending = [[NSSortDescriptor alloc]initWithKey:nil ascending:YES];
NSArray *array2 = [array1 sortedArrayUsingDescriptors:@[acending]];
for (NSNumber *a in array2) {
NSLog(@"%@", a);
}
☀️NSSortDescriptor 复杂对象 person 按要求排序 便利
Person *person1 = [[Person alloc]initWithName:@"B" age:20];
Person *person2 = [[Person alloc]initWithName:@"C" age:30];
Person *person3 = [[Person alloc]initWithName:@"A" age:40];
NSMutableArray *array = [NSMutableArray arrayWithObjects:person1, person2, person3, nil];
//按照名字升序(名字为英文)
NSSortDescriptor *name = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES];// NO 为降序
NSArray *arr = [array sortedArrayUsingDescriptors:@[name]];
for (Person *p in arr) {
NSLog(@"%@ %ld", p.name, p.age);
}
//☀️ usingSelector 数组排序 可变数组用sortUsingSelector
//默认升序 //compare 可以比较的对象有 NSString NSNumber,不能对复杂对象进行比较。
NSArray *nameArray = @[@"ddd", @"ccc", @"aaa", @"bbb"];
NSArray *sorted1 = [nameArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", sorted1);
//☀️ 复杂对象排序 自己重写compare方法
Person *person1 = [Person personWithName:@"Angle" age:25];
Person *person2 = [Person personWithName:@"Bill" age:24];
Person *person3 = [Person personWithName:@"Cimi" age:23];
Person *person4 = [Person personWithName:@"Doom" age:22];
NSArray *personArray = @[person1, person2, person3, person4];
//名字升序
NSArray *sorted1 = [personArray sortedArrayUsingSelector:@selector(compareName:)];
for (Person *person in sorted1) {
[person print];
}
.m
- (NSComparisonResult)compareName:(Person *)anotherPerson
{
return [self.name compare:anotherPerson.name];
// return -[self.name compare:anotherPerson.name]; // 前面加 -号 降序
}