есть ли способ отсортировать календарь или напоминания? Я не нашел свойства sortIndex или что-то в этом роде... Как приложение напоминания сортирует там элементы?
С наилучшими пожеланиями
есть ли способ отсортировать календарь или напоминания? Я не нашел свойства sortIndex или что-то в этом роде... Как приложение напоминания сортирует там элементы?
С наилучшими пожеланиями
В настоящее время в iOS 6 SDK нет открытого доступа к индексу сортировки, используемому приложением «Напоминания». Вам нужно будет отсортировать, используя какой-либо другой метод в вашем приложении.
Я использовал это для сортировки EKReminders по приоритету
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"priority" ascending:YES] ;
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:sortDescriptors];
Вот категория EKReminder, содержащая метод сравнения двух напоминаний (экземпляров EKReminder). Затем я использую метод NSArray sortUsingSelector следующим образом:
[myReminders sortUsingSelector:@selector(compare:)];
Критерии сортировки следующие: 1) Все завершенные напоминания перечислены ниже открытых (незавершенных) напоминаний.
2) открытые напоминания сортируются по дате будильника (alarm.absoluteDate)
3) выполненные напоминания сортируются по дате завершения
Надеюсь это поможет!
@implementation EKReminder (Сортировка)
-(NSComparisonResult)сравнить:(EKReminder*)напоминание {результат NSComparisonResult = 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;
}
@конец