Web服务应用程序崩溃,不经常发生

时间:2014-05-03 17:44:28

标签: ios objective-c web-services

大约几周前,我将我的JobSearch应用程序提交到App Store。此应用程序使用美国职位搜索Web服务来获取JSON数据中的作业,以便我可以将这些作业放入数组中。

无论如何,我的应用程序因iPhone 5崩溃而被拒绝了。我读了日志,他们说

异常类型:EXC_CRASH(SIGABRT)

所以我在我的应用程序中创建了一个异常断点。事实证明,如果我为输入输入随机垃圾,Web服务可能会返回0个作业,有时它会返回SIGABRT。我在代码的这一行找到了崩溃,我正在创建一个数组来保存服务:

 NSMutableArray *jobsCallArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

我真的找不到这个代码的任何问题,这是我需要修复才能让我的应用程序被接受的唯一方法。如果你想看看我如何将服务称为完整的,那么这就是代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{


if ([segue.identifier isEqualToString:@"push"])
{
    NSString *urlString = [NSString stringWithFormat:@"http://api.usa.gov/jobs/search.json?query=%@+jobs+in+%@", [jobDescription text], [location text]];

    NSURL *url = [NSURL URLWithString:urlString];

    NSData *data = [NSData dataWithContentsOfURL:url];

    NSError *error;

    NSMutableArray *jobsCallArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    NSMutableArray *positionArray = [[NSMutableArray alloc] init];

    for (NSDictionary *theJob in jobsCallArray)
    {
        NSString *jobDesc = theJob[@"position_title"];
        [positionArray addObject:jobDesc];
    }

    FoundJobsTableViewController *detailVC = (FoundJobsTableViewController*)segue.destinationViewController;

    [detailVC  setArray:positionArray];
    [detailVC setTheUrlString:urlString];



}
}

所有帮助表示赞赏,提前致谢

1 个答案:

答案 0 :(得分:0)

您需要检查错误以及您是否真正接收数据:

if (!error && data) {
    NSMutableArray *jobsCallArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
}