NSSortDescriptor

NSSortDescriptor 指定用于对象数组排序的对象的属性


NSMutableArray *ma1 =[[NSMutableArray alloc] init];

   [ma1 addObject:@"2"];

   [ma1 addObject:@"1"];

   [ma1 addObject:@"3"];

    

   NSSortDescriptor *sd1 = [NSSortDescriptorsortDescriptorWithKey:@"self" ascending:NO];

   NSArray *arr1 = [ma1 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd1,nil]];

    

   for (NSString *str in arr1) {

       NSLog(@"%@", str);

   }

    

   NSMutableArray *ma2 = [[NSMutableArray alloc] init];

   [ma2 addObject:@"b"];

   [ma2 addObject:@"c"];

   [ma2 addObject:@"a"];    

    

   NSSortDescriptor *sd2 = [NSSortDescriptorsortDescriptorWithKey:@"self" ascending:YES];

   NSArray *arr2 = [ma2 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd2,nil]];

    

   for (NSString *str in arr2) {

       NSLog(@"%@", str);

   }

    

   NSMutableArray *ma3 = [[NSMutableArray alloc] init];

    

   NSMutableDictionary *md1 = [[NSMutableDictionary alloc] init];

   [md1 setObject:@"e" forKey:@"name"];

    

   NSMutableDictionary *md2 = [[NSMutableDictionary alloc] init];

   [md2 setObject:@"d" forKey:@"name"];

    

   NSMutableDictionary *md3 = [[NSMutableDictionary alloc] init];

   [md3 setObject:@"f" forKey:@"name"];

    

   [ma3 addObject:md1];

   [ma3 addObject:md2];

   [ma3 addObject:md3];

    

   [md1 release];

   [md2 release];

   [md3 release];    

    

   NSSortDescriptor *sd3 = [NSSortDescriptorsortDescriptorWithKey:@"name" ascending:YES];

   NSArray *arr3 = [ma3 sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd3,nil]];

    

   for (NSMutableDictionary *md in arr3) {

       NSLog(@"%@", [md objectForKey:@"name"]);

   }

                          

   [ma1 release];

   [ma2 release];

   [ma3 release];

 

转自:http://www.cnblogs.com/zhw511006/archive/2011/06/16/2082787.html

 

NSSortDescriptor 指定用于对象数组排序的对象的属性。

如果是Employee对象需要按照name来排序,就生成下面的descriptor

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:name ascending:YES];

如果需要多个排序,比如先按name排序,再按入职日期排序。那就创建两个descriptor

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:hireDate ascending:YES];

两个descriptor放到数组里一起传给需要排序的数组。

 

如果对象就是NSString,就是字符串数组排序,那更简单了,sortdescriptor的key直接指定为nil,就直接排序对象,而不是对象的某一个属性了。

    NSSortDescriptor *descriptor= [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES];

    NSArray *descriptors= [NSArray arrayWithObject:descriptor];

    NSArray *myDataArray=[NSArray arrayWithObjects:@"what", @"xero", @"highligth", @"mountain",@"Victory", @"Balance", nil];

    NSArray *resultArray= [myDataArray sortedArrayUsingDescriptors:descriptors];

    NSLog(@"%@",resultArray);

 

NSArray 使用sortedArrayUsingDescriptors,返回排序好的数组。

NSMutableArray可以直接使用sortUsingDescriptors,对数组本身排序。

 

转自:http://blog.sina.com.cn/s/blog_8c87ba3b0101phr5.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值