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){ ... }]
  • 相关阅读:
    二分法模板
    二分答案模板
    51nod 1010 只包含因子2 3 5的数
    三次握手和四次挥手(面试必问)
    TCP协议和UDP协议
    纯CSS3画出小黄人并实现动画效果
    正则表达式里字符串”不包含”匹配技巧
    12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
    使用jTopo给Html5 Canva中绘制的元素添加鼠标事件_html5教程技巧
    程序猿们,快用Emoji表情写代码吧
  • 原文地址:https://www.cnblogs.com/likwo/p/2302584.html
Copyright © 2011-2022 走看看