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){ ... }]
  • 相关阅读:
    java三大框架
    Servlet 工作原理解析
    Android四大基本组件介绍与生命周期
    wait 和 sleep
    Linux Mysql使用
    Android开发人员必备的10 个开发工具
    AIDL
    IPC Binder
    php 比较2字符串相似度 百分比
    php 数字 的简单加解密
  • 原文地址:https://www.cnblogs.com/likwo/p/2302584.html
Copyright © 2011-2022 走看看