4

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

4

1 回答 1

8

用它们内部的免费名称来称呼它们是令人困惑的原因。如果你打电话给他们NSNumberNSString他们在文档中列出),那么答案很明确:

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

编辑:@Magnus 指出,为了查找它们而使用NSCFBooleanisa并不明显。NSNumber确实如此。对我来说这很明显,因为我知道 Core Foundation 类型系统,而且我知道免费桥接类的含义以及它们是如何实现的(这是所有 Cocoa IMO 中最酷的技巧之一)。但是,如果你不知道这些事情呢?它仍然没有问题。

  • 在调试器中,查看变量列表并展开您关心的变量。它的第一个“成员”将是它的超类。扩张。继续,直到找到您知道的课程。

  • 或者,您可以使用NSStringFromClass([object superclass]). 继续superclass检查尽可能多的级别。

于 2011-03-10T03:22:09.793 回答