无法识别的选择器 - 例外

时间:2016-11-27 16:01:02

标签: ios swift caching

我有这个例外:

  

2016-11-27 16:37:28.416 Participact [8846:501284] *** NSForwarding:   警告:类的对象0x7ff90da33110' Participact.UserResult'不   没有实现methodSignatureForSelector: - 提前麻烦   无法识别的选择器 - [Participact.UserResult   replacementObjectForKeyedArchiver:]

生成者:

let placesDataFinal = NSKeyedArchiver.archivedDataWithRootObject(self.userResults)
NSUserDefaults.standardUserDefaults().setObject(placesDataFinal, forKey: "places")

这个类UserResults的位置:

class UserResult: JSONObject {
    lazy private(set) var taskId: Int? = self.deserializeJSON("TaskId")
    lazy private(set) var aggregato: Boolean? = self.deserializeJSON("Aggregato")
    lazy private(set) var tipo: String? = self.deserializeJSON("Tipo")
    lazy private(set) var valori: [String]? = self.deserializeJSON("Valori")
}

我认为对于修复:从UserResult继承NSObject,但我不能,因为它与JSONObject冲突。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

UserResult类必须实现协议NSCoding才能使用NSKeyedArchiver进行存档。

关于如何实现协议,请参阅此link,基本上您必须实现这些方法:

func encodeWithCoder(aCoder: NSCoder)
init(coder aDecoder: NSCoder)