1

我正在尝试在此处遵循本教程http://ios-blog.co.uk/iphone-development-tutorials/parsing-json-on-ios-with-asihttprequest-and-sbjson/来执行 ASIHttp 和 SBJSon同时进行教程,一切都很好,直到上线

NSMutableArray *colorTitles = [jsonDictionary objectForKey:@"title"];

它会因错误而崩溃的地方

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x9340d20'

我已经尝试使用 NSArray、NSString 并且没有想法了......我的代码与链接完全一样

4

3 回答 3

1

当您尝试调用不属于相应类或其超类的方法时,可能会发生这种情况,然后在这种情况下您会收到错误:unrecognized selector sent to instance

所以检查你得到什么 JSON。根据 JSON Response(data) 尝试解析它。

我想告诉你关于 JSON:

JSON is built on two structures:

A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.

在 JSON 中,它们采用以下形式:

目的

对象是一组无序的名称/值对。对象以 {(左大括号)开始,以 }(右大括号)结束。每个名称后跟 :(冒号),名称/值对用 ,(逗号)分隔。

大批:

数组是值的有序集合。数组以 [(左括号)开头,以 ](右括号)结尾。值用 ,(逗号)分隔。

价值

值可以是双引号中的字符串、数字、true 或 false 或 null,也可以是对象或数组。这些结构可以嵌套。

我认为您正在获取 Value JSON,因此请尝试以下操作。还有一件事你不能从字面上将值分配(创建对象)给 NSmutableArray。所以请按以下方式进行。

NSArray *colorTitles = [jsonDictionary valueForKey:@"title"];

如果您仍然没有得到正确的结果。

http://www.json.org/

于 2012-03-04T05:56:56.260 回答
0

objectForKey是一种方法NSDictionary,不是NSArray。您可能在 JSON 字符串解析中遗漏(或过度)了一个步骤。

于 2012-03-04T04:45:15.330 回答
0

通常,当您尝试访问已处理的对象时会出现这种错误。检查您是否过度释放或不保留jsonDictionary.

于 2012-03-04T05:13:09.803 回答