【发布时间】:2012-03-14 09:11:56
【问题描述】:
我有一个接收推送通知的应用。 我想在应用程序菜单内的按钮附近添加具有正确值的徽章(您还记得旧的 Facebook 应用程序吗?)。
我正在尝试从 AppDelegate 中的通知中获取徽章值,将其保存在 NSUserDefault 中以在其他视图控制器中使用它。
NSString * badgeValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:badgeValue forKey:@"badge"];
[defaults synchronize];
问题是,如果我尝试将值放在标签中,应用程序会崩溃
'NSInvalidArgumentException',原因:'-[__NSCFNumber isEqualToString:]:无法识别的选择器发送到实例
Xcode 让我将 badgeValue 保存在一个字符串中,但是当我将该字符串放入标签时,它说它不是一个正确的字符串
if ([badgeValue isKindOfClass:[NSString class]]) {
NSLog(@"it is string !!!!!!!!!!!!!!!");
// treat it as a string object
} else {
NSLog(@"it is not a string !!!!!!!!!!!!!!!");
// treat it as a number object
}
通过调试,我发现 badgeValue 不是真正的字符串,而是 __NSCFNumber,如果我尝试将其转换为字符串,则返回值是一个很长的奇怪数字。 我到处搜索获取通知徽章值的方法,但我能想到的唯一选择是 php 查询...有什么想法吗?
【问题讨论】:
标签: xcode string push-notification nsnumber badge