Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不使用键访问NSMutableDictionary值?_Ios_Json_Nsdictionary - Fatal编程技术网

Ios 不使用键访问NSMutableDictionary值?

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];

对于iOS开发和objective-c来说都是全新的。我有以下方法:

-(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]]) {...}