Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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 来自JSON的字典中的键_Ios_Json_Dictionary_Key - Fatal编程技术网

Ios 来自JSON的字典中的键

Ios 来自JSON的字典中的键,ios,json,dictionary,key,Ios,Json,Dictionary,Key,我正在导入一个JSON字典。我需要知道使用它的钥匙的名称 字典正在加载数据确定: - (void)connectionDidFinishLoading:(NSURLConnection *)connection { [connection release]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; [responseData

我正在导入一个JSON字典。我需要知道使用它的钥匙的名称

字典正在加载数据确定:

   - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];    
  NSDictionary *results = [responseString JSONValue];
  NSLog(@"tenga: %@",results);
但当我尝试获取密钥名称时,应用程序崩溃:

NSArray * keys = [results allKeys];
NSLog(@"keys: %@",keys); ...}
错误消息:

[\uu NSArrayM allKeys]:发送到实例0x5a16b30的无法识别的选择器 2011-08-30 22:52:26.171 Twitter搜索[1906:207]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayM allKeys]:未识别的选择器发送到实例0x5a16b30'

为什么
allkey
不工作

如何获取密钥的名称以便开始使用对象

编辑


我在使用发布的日志说,这个调用返回的不是NSDictionary,而是NSArray。NSArray没有导致崩溃的allKeys选择器。如果您发布更多关于您正在使用的JSON框架的信息,我们可以帮助您更好地解决问题

您从中获取JSON字符串的URL提供了一个数组,而不是一个对象,即它看起来像:

[ { "foo1" : "bar1" }, { "foo2" : "bar2" },... ]
注意括号
[]
。在这种情况下,JSON解析器将
NSArray
作为顶级(Objective-C)对象。你需要一些逻辑,比如:

id results = [responseString JSONValue];
if ([results isKindOfClass: [NSArray class]])
{
    // probably iterate through whtever is in it
}
else if ([results isKindOfClass: [NSDictionary class]])
{
    // dictionary at the top level.  Hooray!
}
else
{
    // something went horribly wrong, deal with it.
}

您遇到了什么样的崩溃?嗨,Tnx,我在问题中添加了错误。那么您使用的是什么JSON框架?您的服务器返回数组,而不是字典。检查响应字符串的值,例如,使用NSLog打印它。谢谢,如果我记录字符串“responseString”,我会得到一个大字符串,如果我记录字典,我会得到字典样式的日志,那么如何确保数组进入字典?