Ios 不使用键访问NSMutableDictionary值?
对于iOS开发和objective-c来说都是全新的。我有以下方法:Ios 不使用键访问NSMutableDictionary值?,ios,json,nsdictionary,Ios,Json,Nsdictionary,对于iOS开发和objective-c来说都是全新的。我有以下方法: -(NSMutableArray *)fetchDatabaseJSON{ NSURL *url = [NSURL URLWithString:@"http://www.ios.com/ios/responseScript.php"]; NSError *error = nil; NSURLRequest *request = [NSURLRequest requestWithURL:url];
-(NSMutableArray *)fetchDatabaseJSON{
NSURL *url = [NSURL URLWithString:@"http://www.ios.com/ios/responseScript.php"];
NSError *error = nil;
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:&error];
//jsonArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
//NSLog(@"Array: %@",[jsonArray objectAtIndex:0]);
jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSLog(@"Dictionary: %@", jsonDictionary);
return jsonArray;
}
现在,NSLog显示:
2013-02-03 19:15:37.081测试连接[24510:c07]字典:(
班纳纳,
苹果,
(奶酪)
据我所知,字典里的任何东西都没有键值。这怎么可能?我怎样才能修好它?我希望能够有一些键来简化字典上的操作
在这方面,
JSONObjectWithData
可能会返回NSArray或NSDictionary,具体取决于您提供的JSON数据。如果您的JSON字符串是数组,那么您将拥有一个NSArray。如果您的JSON数据是一个字典,那么您将得到一个NSDictionary
将JSON数据(您的数据变量)转换为字符串,并用NSLog打印出来。要将NSData转换为NSString,请使用以下命令:
NSString *myString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
if ([obj isKindOfClass:[NSArray class]]) {...}
如果您打印出来并看到一个JSON数组,您根本没有字典。。如果您可以更改生成JSON的服务器代码,您就可以更改它
我还注意到一件事,您假设返回的容器是可变的。如果我没有弄错的话,您需要在JSONObjectWithData的options参数中使用类似于NSJSONReadingMutableContainers
的选项来获得它
最后一个提示是,如果您想在拥有NSArray(或NSDictionary)的情况下签入代码,请使用以下方法:
NSString *myString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
if ([obj isKindOfClass:[NSArray class]]) {...}