我正在使用从Web服务器上的PHP文件接收的JSON数组。
这是我正在使用的代码:
NSMutableString *ms = [[NSMutableString alloc] initWithString:@"http://mujercanariasigloxxi.appgestion.eu/app_php_files/comprobartipo.php?id="];
NSString *tipo=[[view annotation] title];
NSString* urlTextEscaped = [tipo stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[ms appendString:urlTextEscaped];
NSLog(@"TIPO ES AQUI %@", urlTextEscaped);
NSURLRequest *request1 = [NSURLRequest requestWithURL:[NSURL URLWithString:ms]];
[NSURLConnection sendAsynchronousRequest:request1 queue:[NSOperationQueue mainQueue] completionHandler: ^(NSURLResponse *response, NSData *data1, NSError *connectionError) {
if (data1) {
NSArray *array = [NSJSONSerialization JSONObjectWithData:data1 options:0 error:nil];
NSLog(@"PROCEDENCIA DESDE INTERNET %@", [array objectAtIndex:0]);
NSLog(@"ESTO ES DATA en If %@",data1);
}else{
NSLog(@"ESTO ES DATA en ELSE %@",data1);
// Tell user there's no internet or data failedN
NSLog(@"NO HAY CONEXION");
}
}];
代码工作正常,但如果NSString *tipo
的字符串值包含&
这样的字符,则应用会崩溃。
错误:
'NSRangeException',原因:' * - [__ NSArrayI objectAtIndex:]:索引0 超出空数组'
的界限
欢迎任何帮助以避免此问题。
答案 0 :(得分:1)
你的崩溃将在这里,
NSArray *array = [NSJSONSerialization JSONObjectWithData:data1 options:0 error:nil];
NSLog(@"PROCEDENCIA DESDE INTERNET %@", [array objectAtIndex:0]); // Crash will be here
您应该检查数组是否有对象。
让我们尝试如下
if (array.count)
NSLog(@"PROCEDENCIA DESDE INTERNET %@", [array objectAtIndex:0]);
谢谢!