第一次编辑:
我将returnData放在JSONObjectWithData:options:error中,但错误仍然存在。
问题发生在10次中,但这很烦人,因为应用程序不起作用。
2014-02-18 10:26:03.236 finalAbogados[47279:f803] Error en consulta basica: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x686c330 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
我在iOS上做一个从PHP脚本获取JSON对象的APP。
该脚本从MS SQL中的数据库调用数据,并在JSON对象中对这些数据进行编码。然后我在iOS上获取对象,并使用NSJSONSerialize来处理数据。
问题是,有时我得到一个空值,有时候我得到了正确的数组。数据返回给我的脚本总是一样的,在这里公开:
[{"0":"","NombreOrganismo":"","1":"Judicial","NombreTipoInstancia":"Judicial","2":"(Sin asignar)","Numero":"(Sin asignar)"}]
执行查询的代码和相关数据是:
NSString *myRequestString = [NSString stringWithFormat:@"user=%@&pass=%@&cod_asunto=%@", u_received, p_received, cod_received];
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@""]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody:myRequestData];
NSURLResponse *response;
NSError *error;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
NSData *jsondata = [content dataUsingEncoding:NSUTF8StringEncoding];
NSError *jsonError = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsondata options:kNilOptions error:&jsonError];
NSMutableArray *NombreOrga = [[NSMutableArray alloc] init];
NSMutableArray *NombreInstancia = [[NSMutableArray alloc] init];
NSMutableArray *Numero = [[NSMutableArray alloc] init];
if ([jsonObject isKindOfClass:[NSArray class]]) {
NSLog(@"Its an ARRAY!!.");
NSArray *jsonArray = (NSArray *)jsonObject;
for (id item in jsonArray) {
if ([item isKindOfClass:[NSDictionary class]]) {
NSString *aux = [(NSDictionary*)item objectForKey:@"NombreOrganismo"];
NSString *aux2 = [(NSDictionary*)item objectForKey:@"Numero"];
NSString *aux3 = [(NSDictionary*)item objectForKey:@"NombreTipoInstancia"];
if (aux) {
[NombreOrga addObject:aux];
}
if (aux2) {
[NombreInstancia addObject:aux2];
}
if (aux3) {
[Numero addObject:aux3];
}
} else {
NSLog(@"item %@ is not a dictionary",item);
}
}
}
else {
NSLog(@"Its probably a DICTIONARY!.");
}
这很奇怪,有时NSLog告诉我“它可能是一个字典!”并且值为空且应用程序不起作用。有时NSLog告诉我“它是一个阵列!”并且应用程序正常工作。
但是SCRIPT返回的数据总是一样的!
非常感谢大家的帮助。