Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSNull布尔值获取崩溃目标c_Ios_Objective C_Xcode_Boolean - Fatal编程技术网

Ios NSNull布尔值获取崩溃目标c

Ios NSNull布尔值获取崩溃目标c,ios,objective-c,xcode,boolean,Ios,Objective C,Xcode,Boolean,崩溃: [NSNull boolValue]:发送到实例0x1b5b12878的选择器无法识别 2018-05-13 19:04:46.024492+0530 Doctor Express提供程序[1681:579933]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSNull boolValue]:未识别的选择器发送到实例0x1b5b12878 代码: NSUserDefaults *pref=[NSUserDefaults stand

崩溃:

[NSNull boolValue]:发送到实例0x1b5b12878的选择器无法识别 2018-05-13 19:04:46.024492+0530 Doctor Express提供程序[1681:579933]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSNull boolValue]:未识别的选择器发送到实例0x1b5b12878

代码:

NSUserDefaults *pref=[NSUserDefaults standardUserDefaults];

strUserId = [pref valueForKey:PARAM_ID];
strUserToken = [pref valueForKey:PARAM_TOKEN];

NSMutableDictionary *dictparam=[[NSMutableDictionary alloc]init];
[dictparam setObject:strUserId forKey:PARAM_ID];
[dictparam setObject:strUserToken forKey:PARAM_TOKEN];
[dictparam setObject:struser_longi forKey:PARAM_LONGITUDE];
[dictparam setObject:struser_lati forKey:PARAM_LATITUDE];
[dictparam setObject:strRequsetId forKey:PARAM_REQUEST_ID];
[dictparam setObject:@"0" forKey:PARAM_DISTANCE];
AFNHelper *afn=[[AFNHelper alloc]initWithRequestMethod:POST_METHOD];

[afn getDataFromPath:FILE_WALK_LOCATION withParamData:dictparam withBlock:^(id response, NSError *error)
{

    NSLog(@"Update Walk Location = %@",response);
    if (response)
    {
        payment=[[response valueForKey:@"payment_type"] boolValue];
        NSLog(@"Something To Print");
        NSLog(@"%d", payment);
        NSLog(@"Something To Print");

        if (payment==0)
        {
            self.lblPayment.text = NSLocalizedString(@"CARD", nil);
            self.imgCashCard.image = [UIImage imageNamed:@"card"];
        }
        else if (payment==1)
        {
            self.lblPayment.text = NSLocalizedString(@"CASH", nil);
            self.imgCashCard.image = [UIImage imageNamed:@"cash"];

        }
        if([[response valueForKey:@"success"] intValue]==1)
        {
            totalDist=[[response valueForKey:@"distance"]floatValue];
            [self.btnDistance setTitle:[NSString stringWithFormat:@"%.2f %@",[[response valueForKey:@"distance"] floatValue],[response valueForKey:@"unit"]] forState:UIControlStateNormal];
        }
        else
        {
            [self.btnDistance setTitle:[NSString stringWithFormat:@"%.2f %@",[[response valueForKey:@"distance"] floatValue],[response valueForKey:@"unit"]] forState:UIControlStateNormal];

            if ([[response valueForKey:@"is_cancelled"] integerValue]==1)
            {
                [self.timerForCancelRequest invalidate];
                [self.timerForDestinationAddr invalidate];
                NSUserDefaults *pref=[NSUserDefaults standardUserDefaults];
                [pref removeObjectForKey:PREF_REQUEST_ID];
                [pref removeObjectForKey:PREF_NAV];
                strRequsetId=[pref valueForKey:PREF_REQUEST_ID];


                [APPDELEGATE showToastMessage:NSLocalizedString(@"Request Canceled", nil) ];


                is_walker_started=0;
                is_walker_arrived=0;
                is_started=0;
                [btnWalker setHidden:NO];
                [btnArrived setHidden:YES];
                [btnWalk setHidden:YES];

                [self.navigationController popToRootViewControllerAnimated:YES];

            }
        }
    }

}];
此行出现错误:

NSLog(@"Update Walk Location = %@",response);
“目的地纬度”=0
“目的地经度”=0
error=“服务尚未启动”
“错误代码”=414
“已取消”=0
“付款类型”=“”
成功=0
单位=公里

正在获取付款类型的null…但在此行中正在崩溃

payment=[[response valueForKey:@"payment_type"] boolValue];
我不知道怎么处理。但此打印功能本身不打印:

NSLog(@"Something To Print");
NSLog(@"%d", payment);
NSLog(@"Something To Print");
你知道怎么处理吗

更新:

  if([response valueForKey:@"payment_type"] != nil || ![[response valueForKey:@"payment_type"] isEqualToString:@""]){
                         payment=[[response valueForKey:@"payment_type"] boolValue];
                         NSLog(@"Something To Print");
                         NSLog(@"%d", payment);
                         NSLog(@"Something To Print");

                         if (payment==0)
                         {
                             self.lblPayment.text = NSLocalizedString(@"CARD", nil);
                             self.imgCashCard.image = [UIImage imageNamed:@"card"];
                         }
                         else if (payment==1)
                         {
                             self.lblPayment.text = NSLocalizedString(@"CASH", nil);
                             self.imgCashCard.image = [UIImage imageNamed:@"cash"];

                         }
                        }

Kiran,你可以在得到布尔值之前检查付款类型是否为空

NSUserDefaults *pref=[NSUserDefaults standardUserDefaults];

strUserId = [pref valueForKey:PARAM_ID];
strUserToken = [pref valueForKey:PARAM_TOKEN];

NSMutableDictionary *dictparam=[[NSMutableDictionary alloc]init];
[dictparam setObject:strUserId forKey:PARAM_ID];
[dictparam setObject:strUserToken forKey:PARAM_TOKEN];
[dictparam setObject:struser_longi forKey:PARAM_LONGITUDE];
[dictparam setObject:struser_lati forKey:PARAM_LATITUDE];
[dictparam setObject:strRequsetId forKey:PARAM_REQUEST_ID];
[dictparam setObject:@"0" forKey:PARAM_DISTANCE];
AFNHelper *afn=[[AFNHelper alloc]initWithRequestMethod:POST_METHOD];

[afn getDataFromPath:FILE_WALK_LOCATION withParamData:dictparam withBlock:^(id response, NSError *error)

{

NSLog(@"Update Walk Location = %@",response);
if (response)
{
    if([response valueForKey:@"payment_type"] != nil && ![[response valueForKey:@"payment_type"] isEqualToString: ""])
    {
        payment=[[response valueForKey:@"payment_type"] boolValue];
        NSLog(@"Something To Print");
        NSLog(@"%d", payment);
        NSLog(@"Something To Print");

        if (payment==0)
        {
            self.lblPayment.text = NSLocalizedString(@"CARD", nil);
            self.imgCashCard.image = [UIImage imageNamed:@"card"];
        }
        else if (payment==1)
        {
            self.lblPayment.text = NSLocalizedString(@"CASH", nil);
            self.imgCashCard.image = [UIImage imageNamed:@"cash"];

        }
        if([[response valueForKey:@"success"] intValue]==1)
        {
            totalDist=[[response valueForKey:@"distance"]floatValue];
            [self.btnDistance setTitle:[NSString stringWithFormat:@"%.2f %@",[[response valueForKey:@"distance"] floatValue],[response valueForKey:@"unit"]] forState:UIControlStateNormal];
        }
        else
        {
            [self.btnDistance setTitle:[NSString stringWithFormat:@"%.2f %@",[[response valueForKey:@"distance"] floatValue],[response valueForKey:@"unit"]] forState:UIControlStateNormal];

            if ([[response valueForKey:@"is_cancelled"] integerValue]==1)
            {
                [self.timerForCancelRequest invalidate];
                [self.timerForDestinationAddr invalidate];
                NSUserDefaults *pref=[NSUserDefaults standardUserDefaults];
                [pref removeObjectForKey:PREF_REQUEST_ID];
                [pref removeObjectForKey:PREF_NAV];
                strRequsetId=[pref valueForKey:PREF_REQUEST_ID];


                [APPDELEGATE showToastMessage:NSLocalizedString(@"Request Canceled", nil) ];


                is_walker_started=0;
                is_walker_arrived=0;
                is_started=0;
                [btnWalker setHidden:NO];
                [btnArrived setHidden:YES];
                [btnWalk setHidden:YES];

                [self.navigationController popToRootViewControllerAnimated:YES];

            }
        }
    }
}

}];

希望这就是你想要的。

@Moritz,只是,我不知道该怎么处理。。你能帮我找到@Larme的可能副本吗?我检查了。。但是在传递值之前无法检查空类型…但是如果你与web开发人员联系,我可以将支付值设置为0或1,用bool来确定是用现金还是信用卡付款,这很奇怪。因为在您的例子中,有第三个值:“unknown”(设置为null)。最好是一个“枚举”或字符串,或其他任何东西。联系不到,所以只有我需要在代码中执行..请..帮帮我..记下我的过去1hr@prakaktawr我需要添加..像后面的其他语句一样检查我的帖子..请..获得相同的内容again@prakakta[NSNull isEqualToString:]:发送到实例0x1b5b12878 2018-05-13 20:16:22.817669+0530 Doctor Express提供程序[1750:603892]***由于未捕获的异常“NSInvalidArgumentException”,终止应用程序,原因:'-[NSNull isEqualToString:]:发送到实例0x1b5b12878的未识别选择器将行更改为'if'([response valueForKey:@“payment_type”!=nil&&![response valueForKey:@“payment_type”]`但是为什么不在我的控制台上打印`NSLog(@“要打印的内容”);NSLog(@“%d”,payment);NSLog(@“要打印的内容”);`因为payment_type没有设置,所以这不是打印要打印的内容