【发布时间】:2014-09-12 09:56:46
【问题描述】:
我创建了一个符合 NSCoding 的 Swift 类。 (Xcode 6 通用,Swift 1.0)
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);
它崩溃给我这个错误。
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:]
我该怎么办?
【问题讨论】:
-
@noundla 不,您链接中的答案不适用于我的问题。我尝试了两种解决方案。 1)将
@objc添加到我的Command 类和NSCoding 方法仍然给我同样的错误。 2) 添加NSObject和我的回答一样。下次你最好先试试。 -
我昨天遇到了同样的问题,该解决方案对我有用。我同时使用了 1 和 2 解决方案来解决问题。
-
@noundla 很奇怪。可能只是因为我们的问题不同。你的是关于
performSelector:,但我的是关于 NSCoding 协议。