Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法识别选择器-ReplacementObjectForkeyDarchiver:在Swift中实现NSCoding时崩溃_Ios_Swift_Xcode6_Nscoding - Fatal编程技术网

Ios 无法识别选择器-ReplacementObjectForkeyDarchiver:在Swift中实现NSCoding时崩溃

Ios 无法识别选择器-ReplacementObjectForkeyDarchiver:在Swift中实现NSCoding时崩溃,ios,swift,xcode6,nscoding,Ios,Swift,Xcode6,Nscoding,我创建了一个符合NSCoding的Swift类。(Xcode 6 GM,Swift 1.0) 但是当我打电话的时候 let data=NSKeyedArchiver.archivedDataWithRootObject(cmd) 它给了我这个错误 2014-09-12 16:30:00.463 MyApp[30078:60b] *** NSForwarding: warning: object 0x7a04ac70 of class '_TtC8MyApp7Command' does not i

我创建了一个符合NSCoding的Swift类。(Xcode 6 GM,Swift 1.0)

但是当我打电话的时候

let data=NSKeyedArchiver.archivedDataWithRootObject(cmd)

它给了我这个错误

2014-09-12 16:30:00.463 MyApp[30078:60b] *** NSForwarding: warning: object 0x7a04ac70 of class '_TtC8MyApp7Command' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[MyApp.Command replacementObjectForKeyedArchiver:]

我该怎么办?

虽然Swift类不需要继承就可以工作,但是为了使用
NSCoding
,您必须
NSObject
继承

class Command: NSObject, NSCoding {
    ...
}

太糟糕了,编译器错误信息量不大:(

这里是最好的答案@noundla No,你链接中的答案对我的问题不起作用。我尝试了这两种解决方案。1)将
@objc
添加到我的命令类和NSCoding方法仍然会给我相同的错误。2) 添加
NSObject
与我的答案完全相同。下次你最好先试试。我昨天也遇到过同样的问题,而且解决方案对我很有效。我使用了1和2两种解决方案来解决这个问题。@noundla-wird。可能只是因为我们的问题不同。你的是关于
性能选择器:
,而我的是关于NSCoding协议。我在将字典中的自定义Swift对象返回回调块时遇到了这个问题。我想知道我是如何知道这些字典中的值必须符合
NSCoding
@Rivera
NSCoding
协议允许对象转换为
NSData
对象,以便您可以执行诸如将其存储在NSUserDefaults中等操作的。我实际上不知道您正在做的事情是否需要这样做。这就是我能说的。我和WatchKit一起工作。原因是作为参数传递的字典必须是属性列表兼容的。它没有文档记录,但显示在控制台日志中。并且您必须将NSObject作为继承子句中的第一个。
class Command: NSObject, NSCoding {
    ...
}