NSSortDescriptor(数组排序)

如果数组里面的每一个元素都是一个个model,例如

DepartsDate.h文件

#import <Foundation/Foundation.h>

@interface DepartsDate : NSObject

@property (nonatomic, retain) NSDate *date;
@property (nonatomic, assign) int    price;

@end
DepartsDate.m文件

#import "DepartsDate.h"

@implementation DepartsDate

@synthesize date, price;

- (void)dealloc
{
    [date release];
    [super dealloc];
}

@end
那么对这个数组排序就可以这样

NSMutableArray *array = [NSMutableArray array];
......
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];[array sortUsingDescriptors:[NSArray arrayWithObject:sort]];
这是按照时间升序排列。如果需要降序,那么将YES改为NO。


使用NSSortDescriptor可以很方便的进行多条件排序,例如:同样是上面的假设,首先按照价格升序排列;当价格相同时,按照日期降序排列。

NSMutableArray *array = [NSMutableArray array];
......
NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES];
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
[array sortUsingDescriptors:[NSArray arrayWithObjects:sort1, sort2, nil]];

版权声明:请大家转载的时候写上作者---周敏。

NSSortDescriptor仅对NSSet,NSArray,NSMutableArray可以排序,需要注意的是

NSSet- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors;这是对NSSet排序,返回一个NSArray。
NSArray- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors;这是对NSArray排序,返回一个新的NSArray,注意内存泄漏。
NSMutableArray- (void)sortUsingDescriptors:(NSArray *)sortDescriptors;这是NSMutableArray排序,没有返回值。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 iOS 中,可以使用 `NSSortDescriptor` 类来对 `UITableView` 中的数据进行排序。以下是一个示例,假设我们有一个包含 `Person` 对象的数组 `peopleArray`,每个 `Person` 对象都有一个 `name` 属性和一个 `age` 属性。 首先,我们需要创建一个 `NSSortDescriptor` 对象来指定我们要按照哪个属性进行排序: ```swift let nameSortDescriptor = NSSortDescriptor(key: "name", ascending: true) let ageSortDescriptor = NSSortDescriptor(key: "age", ascending: true) ``` 上面的代码创建了两个 `NSSortDescriptor` 对象,一个按照 `name` 属性升序排序,另一个按照 `age` 属性升序排序。 接下来,我们需要将这些 `NSSortDescriptor` 对象传递给 `sortedArray(using:)` 方法来对数组进行排序。在这个例子中,我们将使用 `nameSortDescriptor` 对数组进行排序: ```swift let sortedPeopleArray = (peopleArray as NSArray).sortedArray(using: [nameSortDescriptor]) as! [Person] ``` 上面的代码将 `peopleArray` 数组按照 `name` 属性升序排序,结果存储在 `sortedPeopleArray` 数组中。如果你想按照多个属性排序,只需将 `NSSortDescriptor` 对象放入数组中即可: ```swift let sortedPeopleArray = (peopleArray as NSArray).sortedArray(using: [nameSortDescriptor, ageSortDescriptor]) as! [Person] ``` 上面的代码将 `peopleArray` 数组按照 `name` 属性升序排序,如果有相同的 `name` 属性,则按照 `age` 属性升序排序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值