What is the best way to get the time of the next local notification set for my app?
I know the following loop can be used to get notifications, but does this always sort in time order so I could just get time of item , or is it in order of when they were added? And how can just time be pulled from this? Will I need to get whole date and format the time out, or is there a better way?
UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
//oneEvent is a local notification
//get time of first one
This is really two problems. First, how to get the next notification. Second, how to get just the time components of that notification's date.
NSSortDescriptor * fireDateDesc = [NSSortDescriptor sortDescriptorWithKey:@"fireDate" ascending:YES]; NSArray * notifications = [[UIApplication sharedApplication] scheduledLocalNotifications] sortedArrayUsingDescriptors:@[fireDateDesc]] UILocalNotification * nextNote = [notifications objectAtIndex:0];
NSDateComponents * comps = [[NSCalendar currentCalendar] components:(NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit) fromDate:[notification fireDate]]; // Now you have [comps hour]; [comps minute]; [comps second]; // Or if you just need a string, use NSDateFormatter: NSDateFormatter * formatter = [NSDateFormatter new]; [formatter setDateFormat:@"HH:mm:ss"]; NSString * timeForDisplay = [formatter stringFromDate:[notification fireDate]];