对ekcalendar或ekreminder进行排序

时间:2012-10-04 13:47:40

标签: calendar ios6 eventkit reminders ekeventkit

有没有办法对日历或提醒进行排序?我还没有找到sortIndex属性或类似的东西...... 提醒应用程序如何对项目进行排序?

祝你好运

3 个答案:

答案 0 :(得分:1)

目前在iOS 6 SDK中,没有公开访问Reminders应用程序使用的排序索引。您需要在应用程序中使用其他方法进行排序。

答案 1 :(得分:0)

我用它来按优先级排序EKReminders

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"priority" ascending:YES] ;
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:sortDescriptors];

答案 2 :(得分:0)

这是一个EKReminder类别,包含一个比较2个提醒(EKReminder实例)的方法。然后我按如下方式使用NSArray方法“sortUsingSelector”:

[myReminders sortUsingSelector:@selector(compare :));

分类标准如下: 1)所有已完成的提醒列在开放(不完整)提醒下面

2)打开的提醒按报警日期(alarm.absoluteDate)

排序

3)完成的提醒按完成日期排序

希望这有帮助!

import" EKReminder + Sort.h"

@implementation EKReminder(排序)

- (NSComparisonResult)比较:(EKReminder *)提醒{     NSComparisonResult result = NSOrderedSame;

if(self.completed) {
    if(reminder.completed) {
        result = [reminder.completionDate compare:self.completionDate];
    } else {
        result = NSOrderedDescending;
    }
} else {
    if(reminder.completed) {
        //do nothing
        result = NSOrderedSame;
    } else {
        NSDate *date1 = [self.alarms.firstObject absoluteDate];
        NSDate *date2 = [reminder.alarms.firstObject absoluteDate];

        if(date1) {
            if(date2) {
                result = [date1 compare:date2];
            } else {
                result = NSOrderedDescending;
            }
        } else {
            //do nothing
            result = NSOrderedSame;
        }
    }
}

return result;

}

@end