序列化时 JSONKit 无法识别的选择器
Posted
技术标签:
【中文标题】序列化时 JSONKit 无法识别的选择器【英文标题】:JSONKit unrecognized selector while serializing 【发布时间】:2012-02-16 01:27:27 【问题描述】:我正在尝试使用 JSONKit 库并将源文件包含在我的项目中。我已包含 JSONKit.h 标头,以便包含的类别为 NSDictionary 对象提供 JSONData 和 JSONString 选择器。
NSMutableDictionary* root = [NSMutableDictionary dictionary];
[root setValue:@"CONNECT" forKey:@"command"];
NSData* data = [root JSONData];
但在运行时出现以下错误:
-[__NSCFDictionary JSONString]: unrecognized selector sent to instance 0x784b870
为什么分类没有给 NSDictionary 对象添加合适的方法?
【问题讨论】:
【参考方案1】:我正在回答我自己的问题,因为我刚刚弄明白了。
我的代码是从另一个 ios 应用程序引用的静态库的一部分。包含导出类别的静态库时,使用该类别的应用程序必须使用“-ObjC”链接器标志链接。
【讨论】:
【参考方案2】:虽然接受的答案为我解决了问题,但了解它为什么会(以及为什么它可能不会)绝对有用。如需更详细地了解此问题和可能的解决方案,请see this post。
【讨论】:
【参考方案3】:这是一个 n00b 错误,但是当我将 JSONKit.h 和 JSONKit.m 文件导入我的项目时遇到了完全相同的异常,但没有勾选框以将其添加到 Xcode 中的目标。
打开 JSONKit.m,显示 Utilities 面板的 File Inspector 部分,并在 Target Membership 中确保您的应用旁边有一个复选框。
【讨论】:
以上是关于序列化时 JSONKit 无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章
NSInvalidArgumentException,使用 performSegueWithIdentifier 时发送到实例的无法识别的选择器