首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取无法识别的选择器-replacementObjectForKeyedArchiver:在Swift中实现NSCoding时崩溃

获取无法识别的选择器-replacementObjectForKeyedArchiver:在Swift中实现NSCoding时崩溃
EN

Stack Overflow用户
提问于 2014-09-12 17:56:47
回答 1查看 20K关注 0票数 72

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

代码语言:javascript
复制
import Foundation

private var nextNonce = 1000

class Command: NSCoding {

    let nonce: Int
    let string: String!

    init(string: String) {
        self.nonce = nextNonce++
        self.string = string
    }

    required init(coder aDecoder: NSCoder) {
        nonce = aDecoder.decodeIntegerForKey("nonce")
        string = aDecoder.decodeObjectForKey("string") as String
    }

    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encodeInteger(nonce, forKey: "nonce")
        aCoder.encodeObject(string, forKey: "string")
    }
}

但是当我打电话给..。

let data = NSKeyedArchiver.archivedDataWithRootObject(cmd);

它崩溃了,给了我这个错误。

代码语言:javascript
复制
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:]

我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-12 17:57:52

虽然NSObject.类在没有继承的情况下工作,但是为了使用NSCoding,你必须从类继承

代码语言:javascript
复制
class Command: NSObject, NSCoding {
    ...
}

太糟糕了,编译器错误信息不是很丰富:(

票数 228
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25805599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档