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