【问题标题】:ios unrecognized selector [duplicate]ios无法识别的选择器[重复]
【发布时间】:2012-07-04 19:16:18
【问题描述】:

可能重复:
-[__NSCFDictionary JSONRepresentation]: unrecognized selector sent to instance

我在我的两个项目中使用 SBJson (http://stig.github.com/json-framework/)。因此我下载了代码并将其复制到我的第一个项目中,这样我就可以做这样的事情了

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setValue:email  forKey:@"email"];
[dict setValue:password forKey:@"password"];
NSString* json = [dict JSONRepresentation];

现在对于我的第二个和新项目,我也做了同样的事情。我将所有源文件从 SBJson 复制到我的新项目中,并使用与上面完全相同的代码。但是现在当程序来到 NSString* json = [dict JSONRepresentation];我收到以下错误消息:

-[__NSCFDictionary JSONRepresentation]:无法识别的选择器发送到实例 0x689c710

我在第二个项目中做错了什么?

【问题讨论】:

  • 你导入SBJson.h了吗?
  • 我确定您使用的是静态库,但不知何故,链接器没有合并 SBJson 添加到 NSDictionary 的类别文件。
  • @BillWilson 这没什么区别。这是运行时错误,而不是编译器警告。 Obj-C 是一种动态语言;导入头文件只是为了欺骗编译器,方法名查找发生在运行时。
  • @H2C03 我没有看到提到静态库,听起来所有源代码都包含在他的项目中。在任何情况下,所有文件都可能已添加到项目中但未包含在目标中。也许?

标签: ios selector sbjson


【解决方案1】:

确保所有文件都已添加到目标中。

【讨论】:

    【解决方案2】:
    1. 从 iOS 5 开始,您不需要外部库来使用 JSON,This tutorial 可以帮助您。

    2. 该错误是因为您告诉 dict(它是 NSMutableDictionary 的一个实例)执行名为 JSONRepresentation 的方法。 dict 不知道该怎么做。我没有使用那个库,但我猜你需要创建一个 SBJSON 解析器的实例,然后将 dict 作为参数发送。我找到了thisthis的教程,希望对你有帮助。

    【讨论】:

    • 感谢您的回答。我的问题已经被上面的cmets解决了。
    猜你喜欢
    • 2015-04-02
    • 1970-01-01
    • 2017-07-13
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多