IOS-NSSortDescriptor的使用---排序
2015-08-27 09:23
501 查看
我们以数组的排序为例(也许NSSortDescriptor最常用的地方是NSFetchedResultsController中,但用法大致相同)。
假设要对userArray数组中的对象进行排序,而数组中含有多个User对象(User继承于NSManagedObject),User中有一个属性叫做country。
[plain]
1. NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"country" ascending:YES];
2. [userArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
这样,就可以根据每一个User的country来进行升序或降序的排列,sortUsingDescriptors的参数是一个数组,也就是说可以使用多个排序参数。
再比如说,User有一个关系叫做image,image有个属性叫做timestamp,如果要根据User的image关系的timestamp排序,仅需把上面代码中的country改为,image.timestamp。即
[plain]
1. NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"image.timestamp" ascending:YES];
2. [userArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
假设要对userArray数组中的对象进行排序,而数组中含有多个User对象(User继承于NSManagedObject),User中有一个属性叫做country。
[plain]
1. NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"country" ascending:YES];
2. [userArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
这样,就可以根据每一个User的country来进行升序或降序的排列,sortUsingDescriptors的参数是一个数组,也就是说可以使用多个排序参数。
再比如说,User有一个关系叫做image,image有个属性叫做timestamp,如果要根据User的image关系的timestamp排序,仅需把上面代码中的country改为,image.timestamp。即
[plain]
1. NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"image.timestamp" ascending:YES];
2. [userArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
在这里说明一点东西: NSSortDescriptor是一个专门用来排序的。它可以设定关键字(字典中的key),根据对应key的value来进行一个排序。 其中,如果是对array数组进行排序,那么object为字典,并且key对应的value 一定得是string,如果对应的是对象obj,那么系统会报错。 一般用到的地方有NSArray(object 为NSDictionary),core data过滤筛选。
相关文章推荐
- iOS-浅谈runtime运行时机制02-runtime简单使用
- 你是我的小呀小苹果——苹果ios编程第一课
- IOS之秒表计时器
- IOS学习中的TableView的用法
- iOS多线程-05-多图下载
- iOS7 导航栏,view适配
- iOS开发——高级技术&签名机制
- iOS-提高iOS开发效率的方法和工具
- iOS开发——高级技术OC篇&运行时(Runtime)机制
- iOS开发——高级技术精选OC篇&Runtime之字典转模型实战
- iOS开发——高级技术&广告服务
- iOS—Xcode 7真机测试
- iOS完整学习路线图
- iOS开发中调用系统相册、相机 显示中文标题
- 苹果开发者账号如何多人协作进行开发和真机调试XCode
- IOS不用AutoLayout也能实现自动布局的类(4)----MyTableLayout横空出世
- iOS事件传递过程
- IOS 将类的声明,类的定义,主函数分开放的代码。
- 移动 IOS7弹出提示
- iOS 引入支付宝 缺少 #include <openssl/asn1.h>