objectForKey:返回null

时间:2015-03-12 09:04:41

标签: ios objective-c iphone uitableview

嗨,大家好我正在研究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];
        }
    }
}

2 个答案:

答案 0 :(得分:0)

如果您使用stringWithFormat

,它应该有效
NSString *index = [NSString stringWithFormat:@"%@", [currentUserInfo valueForKey:@"index"]];

答案 1 :(得分:0)

在这种情况下,你的字典对象是@“index”,键是@ 0,如果你试试这个,它应该可以工作

NSString *index = [currentUserInfo objectForKey:@0];

要解决此问题,您需要在初始化词典时更改@ 0和@“index”位置