【问题标题】:comparing NSCFString and NSCFBoolean比较 NSCFString 和 NSCFBoolean
【发布时间】:2011-03-10 03:13:04
【问题描述】:

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

【问题讨论】:

    标签: objective-c cocoa macos core-foundation


    【解决方案1】:

    使用它们内部的免费名称来称呼它们是令人困惑的原因。如果您称他们为NSNumberNSString(如文档中所列),那么答案很明确:

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

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

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

    • 或者,您可以使用NSStringFromClass([object superclass]) 遍历超类。继续在superclass 上添加您想要检查的多个级别。

    【讨论】:

    • 我同意。唯一令人沮丧的是,在任何崩溃转储中,他们都会找到 NSCFBoolean 等。在文档中搜索它不会给出任何结果:-(
    • 哈哈!谢谢! (今天早上我需要笑一笑 :-)
    猜你喜欢
    • 1970-01-01
    • 2019-01-29
    • 2014-06-12
    • 2012-04-30
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多