2011-11-29 63 views
3

我發現這篇文章是關於解析來自iOS請求的URL請求的JSON響應:http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-serviceObjective-C:如何閱讀JSON?

本文使用JSON框架。我從網頁上下載了最新的「SBJson_v3.0.4.zip」,並在我的項目中拖入了一個新組。但隨後的構建返回62級這樣的錯誤:

  • ARC禁止用於unsafe_unretained財產「代表」釋放'
  • 現有伊娃「代理」必須__unsafe_unretained的明確消息發送
  • 「保留」是不可用:不適用於自動參考計數模式

有人知道爲什麼嗎? JSON框架與最新的Xcode不兼容?

+0

這更多的是比Xcode中的OS目標(> = 5.0)。相關:http://stackoverflow.com/questions/6368600/some-questions-about-automatic-reference-counting-in-ios5-sdk/6368692#6368692 – peterp

回答

12

由於iOS 5中,iOS設備都有自己的JSON解析器(謝謝你,Twitter的!)

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

請務必檢查輸出的類型 - 它可以是從字符串的任何一個號碼的字典到數組。

+0

我upvoted兩個答案,但爲了記錄,我喜歡這個更多的是因爲如果你不需要使用外部框架的話。 – Chuck

+0

感謝您的回答! – dhrm

+0

'JSONObjectWithData'返回null。爲什麼它可以返回null?任何想法? –

4

您需要爲包中提供的特定文件禁用自動引用計數。如果您轉到項目設置 - >您的目標 - >構建階段選項卡並展開編譯源箭頭,您將看到所有項目文件。

在屬於SBJSON你需要添加-fno-objc-arc編譯器標誌的那些(查找文件,雙擊表的右位,它會彈出一個對話框,在其中您可以添加編譯器標誌)

SBJSON與最新的SDK兼容,但它與最新SDK中啓用的自動引用計數功能不兼容,這就是爲什麼會出現這些錯誤。

Here is an image of what it should look like

+3

哇我真的很想知道,你如何命名你的文件... – vikingosegundo

+0

呵呵我從我正在工作的(祕密)個人項目中截取屏幕截圖,並且這些文件與App名稱的名稱空間是爲了避免類別衝突。除此之外沒有別的理由:) –

0
在您的項目設置

,去建設階段,並點擊編譯源代碼,你會得到一堆這不過是你的項目文件.m文件。 單擊您需要禁用ARC的相應文件的編譯器標誌列,並鍵入-fno-objc-arc。 另外,如果您的項目不支持ARC,但你需要啓用ARC在幾個文件你可以按照-fobjc弧

相同的程序,但這次類型現在你可以使用任何JSON套件。無需擔心格式。 但我強烈建議嘗試蘋果的內置NSJSonSerialization方法,然後去第三方json套件,如果不滿意蘋果。

在github上有它們的負載以及它們的文檔。我目前使用我的項目之一是johnezang-jsonkit

希望這有助於你