使用自定义选择器对NSArray进行排序

时间:2015-04-16 21:16:10

标签: nsarray nssortdescriptor

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

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

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

完成:

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;
                        }];