使用tableview无法使用本地通知

时间:2014-03-13 15:45:11

标签: objective-c arrays uitableview filter uilocalnotification

我成功尝试在不同时间为特定事件设置多个提醒。但是,当我从桌面视图中选择一个事件时,我无法使用提醒或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", ) 

所以我在不同的时间设置了三个通知。前两个具有相同的事件名称,第三个是不同的 - 因此本地临时数组有三个元素。首先,我希望能够在searchResults数组中添加所有三个事件或通知,以便它只打印一次,所以它看起来像:

2014-03-13 10:55:42.489 My App Name[392:60b] My objects: ( "Event name", "Event name", "Event name" )

1 个答案:

答案 0 :(得分:0)

您应该更改当前代码,以便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;