2011-03-10 52 views
4

我使用SBJsonParser來解析JSON。一個輸入可以是0或一個字符串(例如a829d901093),如果它是零,則返回NSCFBoolean,如果它的字符串NSCFString被返回。我怎麼知道哪一個返回? 謝謝!比較NSCFString和NSCFBoolean

回答

8

通過內部免費電話撥打這些電話會造成混淆。如果你給他們打電話NSNumberNSString(因爲它們在文檔中列出),那麼答案是明確的:

if ([value isKindOfClass:[NSNumber class]]) { ... } 

編輯:@Magnus指出,這不是明顯,NSCFBoolean ISA NSNumber在爲了查找它們。確實如此。對我來說,這是非常明顯的,因爲我知道核心基礎類型系統,我知道免費橋接類是什麼意思,以及它們是如何實現的(這是所有可可IMO中最酷的技巧之一)。但如果你不知道這些事情呢?這仍然沒有問題。

  • 在調試器中,查看變量列表並展開您關心的變量。它的第一個「成員」將是它的超類。擴大。繼續直到找到你認識的班級。

  • 或者,您可以使用NSStringFromClass([object superclass])步行超級班。繼續跟上superclass的等級,你想檢查。

+1

我同意。唯一令人沮喪的是,在任何崩潰轉儲中,他們都會鰭NSCFBoolean等等..在文檔中搜索它將不會給結果:-( – Magnus 2012-01-13 12:46:57

+0

LOL!謝謝!(我今天早上需要一個笑聲:-) – mpemburn 2013-03-08 11:13:18