ios - NSInvalidArgumentException,原因 : '-[NSNull isEqualToString:]

标签 ios objective-c

我收到推送通知并尝试按如下方式解析字典,但出现以下异常。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x1a6574ef8'

这是我收到的字典

enter image description here

实现

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if (application.applicationState == UIApplicationStateActive)
    {
       // exception happens the following line
        if([[userInfo objectForKey:@"aps"] objectForKey:@"alert"] != NULL && 
           [[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]isEqualToString:@"New Order!"])
        {
            [[NSNotificationCenter defaultCenter] postNotificationName: @"newOrderNotificationMessage" object: [userInfo objectForKey:@"aps"]];
        }
}

最佳答案

你还需要检查 NSNull 类,试试这个

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if (application.applicationState == UIApplicationStateActive)
    {
        // exception happens the following line
        if([[userInfo objectForKey:@"aps"] objectForKey:@"alert"] != NULL && [[[userInfo objectForKey:@"aps"] objectForKey:@"alert"] class] != [NSNull class]){
            if ([[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]isEqualToString:@"New Order!"])
            {
                [[NSNotificationCenter defaultCenter] postNotificationName: @"newOrderNotificationMessage" object: [userInfo objectForKey:@"aps"]];
            }
        }

    }
}

希望对你有帮助

关于ios - NSInvalidArgumentException,原因 : '-[NSNull isEqualToString:],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45529936/

相关文章:

iphone - 重新进入前景后 UINavigationBar 高度降低

ios - 如何在 tableview 中为图像设置动画以同时扩展和打开另一个 View Controller ?

objective-c - NSLocale 的 NSLocaleCountryCode 键可以直接映射到 TLD 吗?

objective-c - 打印调用函数的调用者的名称

ios - 仅在触摸有颜色的部分时才拖动对象或 ImageView

objective-c - 在 Facebook 上张贴照片

ios - 如何检查我的应用程序是否泄漏?

ios - iPAD 日历控制,包含月、日和周

ios - 如何检测是否点击了 UI 标签?

android - 如何在 Mobile 中获取 One Signal 唯一用户 ID?