【问题标题】:Sort NSArray with custom selector使用自定义选择器对 NSArray 进行排序
【发布时间】:2015-04-16 21:16:10
【问题描述】:

我需要对对象的 NSArray 进行排序,但排序必须基于计算。

所以,我认为我必须使用自定义选择器,在其中进行数学运算,并返回值进行排序。

目标:根据到某个日期的 nr 天对 NSArray 进行排序。 startDate 在对象中,但我必须计算对象日期和另一个日期之间的天数。

我怎样才能做到这一点?

【问题讨论】:

    标签: nsarray nssortdescriptor


    【解决方案1】:

    完成:

    NSArray *sorted = [[finalPTArray objectAtIndex:0] sortedArrayUsingComparator:
                            ^NSComparisonResult(PT *obj1, PT *obj2)
                            {
                                long nrOfDays_Obj1 = 0;
    
                                if (obj1.detail.legalDate)
                                    nrOfDays_Obj1 = [RLCalendricalCalculations daysBetweenDate:[NSDate date] andDate:obj1.detail.legalDate];
                                else
                                    nrOfDays_Obj1 = [RLCalendricalCalculations daysBetweenDate:[NSDate date] andDate:obj1.detail.requestDueDate];
    
    
                                long nrOfDays_Obj2 = 0;
    
                                if (obj2.detail.legalDate)
                                    nrOfDays_Obj2 = [RLCalendricalCalculations daysBetweenDate:[NSDate date] andDate:obj2.detail.legalDate];
                                else
                                    nrOfDays_Obj2 = [RLCalendricalCalculations daysBetweenDate:[NSDate date] andDate:obj2.detail.requestDueDate];
    
    
                                if (nrOfDays_Obj1 < nrOfDays_Obj2)
                                    return NSOrderedAscending;
                                else if (nrOfDays_Obj1 > nrOfDays_Obj2)
                                    return NSOrderedDescending;
                                else
                                    return NSOrderedSame;
                            }];
    

    【讨论】:

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