您的位置:首页 > 移动开发 > Objective-C

Objective-C语法之NSSortDescriptor

2015-06-13 19:51 344 查看
main.m

#import <Foundation/Foundation.h>
#import "Person.h"
/**
NSSortDescriptor 可以实现按照对象的属性进行排序;支持多个属性排序。比如我们有个Person对象,它有名字(name)和年龄(age)两个属性,我们需要按Person的age属性(降序)和name属性(升序)来输出Person对象数组信息
*/
void testSortDescriptor() {
NSMutableArray *mArrPerson = [[NSMutableArray alloc] initWithCapacity:5];
Person *p = [[Person alloc] initWithName:@"KK" age:23];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Candy" age:22];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Wiky" age:27];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Stone" age:32];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Tom" age:28];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Sherlock" age:27];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Alex" age:29];
[mArrPerson addObject:p];
p = [[Person alloc] initWithName:@"Keye" age:28];
[mArrPerson addObject:p];

NSLog(@"按Person的age属性(降序)和name属性(升序)");
NSSortDescriptor *sortByAge = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:NO];
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[mArrPerson sortUsingDescriptors:@[sortByAge, sortByName]];
for (Person *p in mArrPerson) {
NSLog(@"age=%ld, name=%@", p.age, p.name);
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
testSortDescriptor();
}
return 0;
}


Person.h

#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;

- (id)initWithName:(NSString *)name age:(NSInteger)age;
@end


Person.m

#import "Person.h"

@implementation Person
- (id)initWithName:(NSString *)name age:(NSInteger)age {
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
@end


结果:

2015-03-28 12:27:13.240 OCNSSortDescriptor[1276:49262] 按Person的age属性(降序)和name属性(升序)
2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=32, name=Stone
2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=29, name=Alex
2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=28, name=Keye
2015-03-28 12:27:13.241 OCNSSortDescriptor[1276:49262] age=28, name=Tom
2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=27, name=Sherlock
2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=27, name=Wiky
2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=23, name=KK
2015-03-28 12:27:13.242 OCNSSortDescriptor[1276:49262] age=22, name=Candy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: