【问题标题】:Sort NSArray using sortedArrayUsingFunction使用 sortedArrayUsingFunction 对 NSArray 进行排序
【发布时间】:2011-02-28 20:29:57
【问题描述】:

有没有使用 sortedArrayUsingFunction 对 NSArray 进行排序的好例子?

TY!

【问题讨论】:

    标签: iphone cocoa-touch ios cocoa nsarray


    【解决方案1】:
    NSArray *sorted_bookings = [myUnsortedArray sortedArrayUsingFunction:Sort_Bookingdate_Comparer context:self];   
    
    NSInteger Sort_Bookingdate_Comparer(id id1, id id2, void *context)
    {
        // Sort Function
        Booking* booking1 = (Booking*)id1;  
        Booking* booking2 = (Booking*)id2;  
    
    
        return ([booking1.BOOKING_DATE compare:booking2.BOOKING_DATE]); 
    }
    

    这是我用来按预订日期对预订进行排序的。 Booking 是一个具有名为 BOOKING_DATE 的合成实例变量的类。

    【讨论】:

    • 我想知道它是否返回了一个排序数组,或者它是否对数组 (myUnsortedArray) 本身进行了排序。我猜你的例子回答了这个问题。泰!
    • 就我而言,我想要一个新数组。但是,如果您的数组是 NSMutableArray,则有一个实例方法可以对数组进行排序。就像 Bogatyr 的例子一样
    【解决方案2】:

    如文档中所述: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

    NSInteger intSort(id num1, id num2, void *context)
    {
        int v1 = [num1 intValue];
        int v2 = [num2 intValue];
        if (v1 < v2)
            return NSOrderedAscending;
        else if (v1 > v2)
            return NSOrderedDescending;
        else
            return NSOrderedSame;
    }
    

    【讨论】:

      【解决方案3】:

      使用 NSMutableArray 关闭类比:

      [opponentMatchDicts sortUsingFunction:compareMatchByDate context:nil];
      ...
      
      
      static int compareMatchByDate( id m1, id m2, void *context)
      {
          NSDictionary *mDict1 = (NSDictionary *) m1;
          NSDictionary *mDict2 = (NSDictionary *) m2;
          NSDate *date1 = [mDict1 objectForKey:kMatchNSDate];
          NSDate *date2 = [mDict2 objectForKey:kMatchNSDate];
      
          int rv = [date1 compare:date2];
          return rv;
      }
      

      【讨论】:

        猜你喜欢
        • 2014-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多