您的位置:首页 > 其它

OC 基本的便利排序方法

2016-04-23 15:00 267 查看
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]; // 前面加 -号 降序

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: