zoukankan      html  css  js  c++  java
  • NSArray排序

    1. Either you implement a compare-method for your object:

    - (NSComparisonResult)compare:(Person *)otherObject {
       
    return [self.birthDate compare:otherObject.birthDate];
    }

    NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];


    2. or usually even better: (The default sorting selector of NSSortDescriptor is compare:)

    NSSortDescriptor *sortDescriptor;
    sortDescriptor
    = [[[NSSortDescriptor alloc] initWithKey:@"birthDate"
                                                  ascending
    :YES] autorelease];
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    NSArray *sortedArray;
    sortedArray
    = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];

    3. See the NSMutableArray method sortUsingFunction:context:
    NSComparisonResult compare(Person *firstPerson, Person *secondPerson, void *context) {
     
    if ([firstPerson birthDate] < [secondPerson birthDate])
       
    return NSOrderedAscending;
     
    else if ([firstPerson birthDate] > [secondPerson birthDate])
       
    return NSOrderedDescending;
     
    else
       
    return NSOrderedSame;
    }
    int SortPlays(id a,  id b, void* context) {
       
    Play* p1=a;
       
    Play* p2=b;
       
    if (p1.score<p2.score) return NSOrderedDescending;
       
    else if (p1.score>p2.score) return NSOrderedAscending;
       
    return NSOrderedSame;
    }

    ...
    [validPlays sortUsingFunction:SortPlays context:nil];

    4. Starting in iOS 4 you can also use blocks for sorting.
    NSArray *arrayToSort = where ever you get the array from... ;
    NSComparisonResult (^sortBlock)(id, id) = ^(id obj1, id obj2) {
     
    if ([obj1 position] > [obj2 position]) {
       
    return (NSComparisonResult)NSOrderedDescending;
     
    }
     
    if ([obj1 position] < [obj2 position]) {
       
    return (NSComparisonResult)NSOrderedAscending;
     
    }
     
    return (NSComparisonResult)NSOrderedSame;
    };
    NSArray *sorted = [arrayToSort sortedArrayUsingComparator:sortBlock];
    featuresArray = [unsortedFeaturesArray sortedArrayUsingComparator: ^(id a, id b){ ... }]
  • 相关阅读:
    nginx解决Ajax跨域问题
    传入token值到下个操作
    获取token值并写入Excel文件中
    读取配置文件.ini
    js判断页面元素是否存在
    SQL Server数据库管理常用的SQL和TSQL语句
    常用聊天工具(IM)在线客服链接代码
    [转]最大概率选择到“最好女孩”的算法
    Web开发:设置复选框的只读效果
    Web开发常用边框颜色汇总
  • 原文地址:https://www.cnblogs.com/likwo/p/2302584.html
Copyright © 2011-2022 走看看