大约几周前,我将我的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];
}
}
所有帮助表示赞赏,提前致谢
答案 0 :(得分:0)
您需要检查错误以及您是否真正接收数据:
if (!error && data) {
NSMutableArray *jobsCallArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
}