【问题标题】:Xcode: getting badge value to add it to a labelXcode:获取徽章值以将其添加到标签
【发布时间】: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


    【解决方案1】:

    “Xcode 让我将 badgeValue 保存在字符串中”是什么意思?如果您尝试将 badgeValue 键入为 NSNumber,是否会收到错误或编译器警告?文档和您自己的日志记录告诉您“badge”键的值是一个 NSNumber。

    NSNumber * badgeValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"];
    [label1 setIntValue:badgeNumber.intValue];
    

    这样的东西行不通吗?

    【讨论】:

      【解决方案2】:

      是的,就在昨天我尝试过

       NSString *string = [NSString stringWithFormat:@"%d", [badgeValue intValue]];
      

      而且它有效!感谢您的帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        相关资源
        最近更新 更多