Objective-C:如何阅读JSON?

时间:2011-11-29 18:36:34

标签: objective-c ios json

我发现这篇文章是关于从iOS请求的URL请求中解析JSON响应:http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service

本文使用JSON Framework。我从网页上下载了最新的“SBJson_v3.0.4.zip”并将其拖入我项目中的新组。但随后构建返回62错误,如:

  • ARC禁止发布'release'
  • 的显式消息
  • unsafe_unretained属性'委托'的现有ivar'委托'必须是__unsafe_unretained
  • 'retain'不可用:在自动引用计数模式下不可用

有人知道为什么吗? JSON Framework是否与最新的Xcode不兼容?

4 个答案:

答案 0 :(得分:12)

从iOS 5开始,iOS有自己的JSON解析器(谢谢Twitter!)

NSError *err = nil;
id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];

确保检查输出的类型 - 它可以是从字符串到数字,从字典到数组的任何内容。

答案 1 :(得分:4)

您需要为程序包中提供的特定文件禁用自动引用计数。如果您转到项目设置 - >你的目标 - > “构建阶段”选项卡并展开“编译源”箭头,您将看到所有项目文件。

在属于SBJSON的那个下你需要添加-fno-objc-arc编译器标志(找到文件,双击表格的右侧位置,它会弹出一个框,你可以在其中添加编译器标志)

SBJSON与最新的SDK兼容,但它与最新SDK中启用的自动引用计数不兼容,这就是您遇到这些错误的原因。

Here is an image of what it should look like

答案 2 :(得分:1)

最新的SBJSON有ARC支持。

https://github.com/stig/json-framework

答案 3 :(得分:0)

在项目设置中,转到构建阶段并单击编译源,您将获得一堆.m文件,这些文件只是您的项目文件。 单击需要禁用ARC的相应文件的编译器标志列,然后键入 -fno-objc-arc 。 此外,如果您的项目不支持ARC,但您需要在少数文件中启用ARC,则可以按照相同的步骤进行操作,但这次输入 -fobjc-arc

现在您可以使用任何json套件。无需担心格式问题。 但我强烈建议尝试使用Apple内置的NSJSonSerialization方法,如果对Apple不满意,可以选择第三方json套件。

github上有很多可用的文件和文档。我目前在我的项目中使用的那个是johnezang-jsonkit

希望这有助于你