我成功地在不同的时间为一个特定的事件设置了多个提醒。然而,当我从TableView中选择一个事件时,我在用提醒或UILocalNotifications填充我的TableView时遇到了麻烦,只有与特定事件相关的通知。
我意识到我必须过滤本地通知。我已经用userInfo,当然还有alertBody, fireDate等等来安排我的本地通知。我怎样才能做到这一点呢?大多数示例只显示整个列表,而不是过滤某些列表。
我代码:@property (nonatomic, strong) NSMutableArray *searchResults;
- (void)viewDidLoad
{
[super viewDidLoad];
//I want to be able to populate searchResults array on load so I can display the contents in my tableView
NSArray *temp = [[UIApplication sharedApplication] scheduledLocalNotifications];
for (int i=0; i<temp.count; i++) {
UILocalNotification *localNotif = [temp objectAtIndex:i];
self.searchResults = [NSMutableArray arrayWithObjects:localNotif.alertBody, nil];
NSLog(@"My objects: %@", self.searchResults);
}
}
我得到这个日志:
2014-03-13 10:55:42.489 My App Name[392:60b] My objects: ( "Event name" )
2014-03-13 10:55:42.492 My App Name[392:60b] My objects: ( "Event name", )
2014-03-13 10:55:42.494 My App Name[392:60b] My objects: ( "Event name", )
所以我在不同的时间设置了三个通知。前两个具有相同的事件名称,第三个不同—因此本地temp数组有三个元素。首先,我希望能够在searchResults数组中添加所有三个事件或通知,因此它将只打印一次,因此它看起来像:
2014-03-13 10:55:42.489 My App Name[392:60b] My objects: ( "Event name", "Event name", "Event name" )
您应该更改当前代码,以便searchResults
保存字典,以便您可以在需要时存储事件名称和其他信息(火灾日期等):
NSMutableArray *searchResults = [NSMutableArray array];
for (int i=0; i<temp.count; i++) {
UILocalNotification *localNotif = [temp objectAtIndex:i];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:localNotif.alertBody forKey:@"body"];
[searchResults addObject:dict;
}
NSLog(@"My objects: %@", searchResults);
self.searchResults = searchResults;