嗨,大家好我正在研究AlarmApp,我想安排一些localNotifications,这个到目前为止有效,但是当我尝试删除它们时,我的问题出现了。我正在尝试列出所有localNotifications并在其userInfo中循环以确定必须删除哪个Notification。我已经在Notification的userInfo属性中添加了一个字典,其中value = index of alarm im alarmArray和key =“index”,现在我正试图用objectForKey来支持该索引:我也尝试过valueForKey:但它不起作用。当我记录字典时,它说字典包含一个项目:{0 =索引;但是当我尝试记录valueForKey:@“index”时,控制台会给我一个“null”。
那么有人可以告诉我我做错了什么吗?这是我的代码:
- (void)deleteNotificationForKey:(int)key
{
UIApplication *application = [UIApplication sharedApplication];
NSArray *eventArray = [application scheduledLocalNotifications];
for (int i = 0; i < eventArray.count; i++) {
UILocalNotification* notification = [eventArray objectAtIndex:i];
NSDictionary *currentUserInfo = notification.userInfo;
NSString *index = [currentUserInfo objectForKey:@"index"];
NSLog(@"%s:%@",__PRETTY_FUNCTION__,currentUserInfo);
NSLog(@"%s:%@",__PRETTY_FUNCTION__,index);
NSLog(@"%s:%d",__PRETTY_FUNCTION__,key);
if ([index intValue] == key)
{
NSLog(@"%s:%@",__PRETTY_FUNCTION__,notification);
[application cancelLocalNotification:notification];
}
}
}
答案 0 :(得分:0)
如果您使用stringWithFormat
:
NSString *index = [NSString stringWithFormat:@"%@", [currentUserInfo valueForKey:@"index"]];
答案 1 :(得分:0)
在这种情况下,你的字典对象是@“index”,键是@ 0,如果你试试这个,它应该可以工作
NSString *index = [currentUserInfo objectForKey:@0];
要解决此问题,您需要在初始化词典时更改@ 0和@“index”位置