ios swift xcode6 nscoding

ios - Selector no reconocido-replacementObjectForKeyedArchiver: bloqueo al implementar NSCoding en Swift



xcode6 (1)

Creé una clase Swift que se ajusta a NSCoding. (Xcode 6 GM, 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") } }

Pero cuando llamo ...

let data = NSKeyedArchiver.archivedDataWithRootObject(cmd);

Se cuelga me da este error.

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:]

¿Que debería hacer?


Aunque la clase Swift funciona sin herencia, pero para utilizar NSCoding , debe heredar de NSObject .

class Command: NSObject, NSCoding { ... }

Lástima que el error del compilador no sea muy informativo :(