应用程序崩溃,因为索引处的对象超出了空数组

时间:2013-11-29 05:57:02

标签: ios json api nsjsonserialization

我正在从json Web服务访问我的应用程序中的数据。每当没有json数据应用程序崩溃时,我正在使用nsjsonserialization,无论如何我可以在响应本身找出空数组并显示错误,从而不会使应用程序崩溃。

4 个答案:

答案 0 :(得分:1)

试试这个。 。 。

NSArray * dataArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

if (dataArray != nil) {

     // perform parsing
}

答案 1 :(得分:1)

如果你想检查它是否为空:

 if ([myMutableArray count] != 0) { ... }

如果要检查变量是否为nil:

 if (myMutableArray) { ... }

或:

 if (myMutableArray != nil) { ... }

答案 2 :(得分:0)

预期的异常..尝试条件是否具有JSon Value Or Not

这样的事情:

 UserDetails = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:nil];
 NSLog(@"User Det %@", UserDetails);

 if (!UserDetails){ 
     NSLog(@"Doesn't exist");
 }else{ 
     NSlog(@"%@",[UserDetails objectForKey:@"lastName"]);
        .....
 }

答案 3 :(得分:0)

检查数据是否为零或是否发生错误或数据长度

[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
        {
            NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode];
                NSLog(@"responseCode: %d", responseCode);  //check response code

            if ([data length] > 0 && error == nil)

              //data downloaded -> continue
             NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

            else if ([data length] == 0 && error == nil)
                //empty reply
            else if (error != nil && error.code == ERROR_CODE_TIMEOUT)
               // time out
            else if (error != nil)
                //error
        }];