无法从NSDictionary is ios获取值

无法从NSDictionary is ios获取值,ios,nsdictionary,Ios,Nsdictionary,我的NSLog词典输出显示: { "filename" : "mytest100.txt", "filedesc" : "File Description here", "data" : [ ] } 但当我这样做时:NSString*filename=[dict objectForKey:@“filename”]它在这一行崩溃 我做错了什么?这似乎微不足道。从您收到的错误消息中,dict变量不包含NSDictionary,而是和NSString 跟踪您的代码

我的NSLog词典输出显示:

{
    "filename" : "mytest100.txt",
    "filedesc" : "File Description here",
    "data" : [

    ]
 }
但当我这样做时:
NSString*filename=[dict objectForKey:@“filename”]它在这一行崩溃


我做错了什么?这似乎微不足道。

从您收到的错误消息中,
dict
变量不包含
NSDictionary
,而是和
NSString


跟踪您的代码,查找分配
dict
变量的位置,您肯定会看到它被设置为非字典。

从您收到的错误消息中,
dict
变量不包含
NSDictionary
,而是包含和
NSString

跟踪您的代码,查找分配
dict
变量的位置,您肯定会看到它被设置为非字典的内容。

尝试以下操作:

NSDictionary *d = [NSDictionary dictionaryWithObject:@"foo" forKey:@"bar"];
NSLog(@"%@", d);
输出为:

{
    bar = foo;
}
请注意,键或值中没有记录引号?除非您的键和值是@“foo”形式,否则我猜您实际上没有字典

我会把钱放在一个代表JSON的字符串上。崩溃是因为objectForKey:是字符串上无法识别的选择器。

请尝试以下操作:

NSDictionary *d = [NSDictionary dictionaryWithObject:@"foo" forKey:@"bar"];
NSLog(@"%@", d);
输出为:

{
    bar = foo;
}
请注意,键或值中没有记录引号?除非您的键和值是@“foo”形式,否则我猜您实际上没有字典


我会把钱放在一个代表JSON的字符串上。崩溃是因为objectForKey:是字符串上无法识别的选择器。

当它崩溃时,您会收到什么错误消息?您的字典名为dict?没有大写字母或拼写错误?正确,没有拼写错误。错误消息为:[\uu NSCFString objectForKey:]:发送到实例0Xec95e10的选择器无法识别。如果它指的是“文件名”,它肯定在那里,没有多大意义。听起来像是
dict
是一个字符串而不是一个字典。当它崩溃时,你会得到什么错误消息?你的字典叫dict?没有大写字母或拼写错误?正确,没有拼写错误。错误消息为:[\uu NSCFString objectForKey:]:发送到实例0Xec95e10的选择器无法识别。如果它指的是“文件名”,它肯定在那里,没有多大意义。听起来像是
dict
是一个字符串,而不是一个字典。嗯,它可能是,但我怀疑不是。下面是进行中的代码:for(数组中的NSDictionary dict){NSLog(“DICTIONARY IS:%@”,dict);NSString*filename=[dict objectForKey:@“filename”];}数组来自:NSArray*array=[[NSArray alloc]initWithContentsOfFile:myfilename]@IIS7重写,如果您不同意,则运行此命令
NSLog(@“class->%@,[dict class])在您执行
objectForKey
之前,我并不反对,我“我只是想找出我的错误:)输出是:class->\uu NSCFtring所以,你们是对的。你能告诉我如何把那个字符串转换成有效的词典吗?再次感谢。答案就在钱上。@IIS7Rewrite,您在OP中发布的字符串看起来像JSON。如果存储到光盘的是JSON,则需要对其进行反序列化。我很幸运使用了SBJson,但还有其他一些。这是正确的,我正在将一个JSON字符串存储在一个文件中,然后读回并尝试解析它。问题是我对Objective C不太了解,我刚开始,我的JSON实际上比我在这里展示的更复杂,它有其他对象的嵌套数组,所以我不确定如何将JSON解析回一个复杂的对象,它具有简单的属性以及具有复杂对象的数组。我刚从一些简单的属性开始,就被困在这里了。我希望从JSON中获得一个NSDictionary,然后将每个属性作为NSString或NSArray读取。下面是进行中的代码:for(数组中的NSDictionary dict){NSLog(“DICTIONARY IS:%@”,dict);NSString*filename=[dict objectForKey:@“filename”];}数组来自:NSArray*array=[[NSArray alloc]initWithContentsOfFile:myfilename]@IIS7重写,如果您不同意,则运行此命令
NSLog(@“class->%@,[dict class])在您执行
objectForKey
之前,我并不反对,我“我只是想找出我的错误:)输出是:class->\uu NSCFtring所以,你们是对的。你能告诉我如何把那个字符串转换成有效的词典吗?再次感谢。答案就在钱上。@IIS7Rewrite,您在OP中发布的字符串看起来像JSON。如果存储到光盘的是JSON,则需要对其进行反序列化。我很幸运使用了SBJson,但还有其他一些。这是正确的,我正在将一个JSON字符串存储在一个文件中,然后读回并尝试解析它。问题是我对Objective C不太了解,我刚开始,我的JSON实际上比我在这里展示的更复杂,它有其他对象的嵌套数组,所以我不确定如何将JSON解析回一个复杂的对象,它具有简单的属性以及具有复杂对象的数组。我刚从一些简单的属性开始,就被困在这里了。我希望从JSON获得一个NSDictionary,然后将每个属性作为NSString或NSArray读取。