我正在使用SBJsonParser来解析JSON。输入可以是0或字符串(例如a829d901093),如果它为零,则返回NSCFBoolean,如果返回其字符串NSCFString。我怎么知道哪一个被退回? 谢谢!
答案 0 :(得分:8)
通过内部免费电话名称调用这些是令人困惑的原因。如果你打电话给他们NSNumber
和NSString
(因为它们在文档中列出),那么答案很明确:
if ([value isKindOfClass:[NSNumber class]]) { ... }
编辑:@Magnus指出NSCFBoolean
isa NSNumber
并不明显,以便查找它们。确实如此。对我而言,这是非常明显的,因为我知道Core Foundation类型系统,我知道免费桥接类的含义以及它们是如何实现的(它是所有Cocoa IMO中最酷的技巧之一)。但是,如果你不知道那些东西怎么办?它仍然没问题。
在调试器中,查看变量列表并展开您关心的变量。它的第一个“成员”将是超级类。扩大。继续,直到找到你认识的课程。
或者,您可以使用NSStringFromClass([object superclass])
遍历超类。继续将superclass
添加到您想要检查的级别。