比较NSCFString和NSCFBoolean

use*_*064 4 macos cocoa objective-c core-foundation

我正在使用SBJsonParser来解析JSON.输入可以是0或字符串(例如a829d901093),如果它为零,则返回NSCFBoolean,如果返回其字符串NSCFString.我怎么知道哪一个被退回?谢谢!

Rob*_*ier 8

通过内部免费电话名称调用这些是令人困惑的原因.如果你给他们打电话NSNumberNSString(因为它们在文档中列出),那么答案是明确的:

if ([value isKindOfClass:[NSNumber class]]) { ... }
Run Code Online (Sandbox Code Playgroud)

编辑:@Magnus指出,为了查找它们,NSCFBooleanisa 并不明显NSNumber.确实如此.对我而言,这是非常明显的,因为我知道Core Foundation类型系统,我知道免费桥接类的含义以及它们是如何实现的(它是所有Cocoa IMO中最酷的技巧之一).但是,如果你不知道那些东西怎么办?它仍然没有问题.

  • 在调试器中,查看变量列表并展开您关心的变量.它的第一个"成员"将是超级类.扩大.继续,直到找到你认识的课程.

  • 或者,您可以使用超级课程NSStringFromClass([object superclass]).继续坚持superclass你想要检查的多个级别.