Swift 编码/解码
我正试图根据NSCoding协议对一些类属性进行编码:Swift 编码/解码,swift,nscoding,Swift,Nscoding,我正试图根据NSCoding协议对一些类属性进行编码: func encode(with aCoder: NSCoder){ // a Date aCoder.encode(startDate, forKey: "startDate"); // a ()->() aCoder.encode(handler, forKey: "handler"); //1 // a Boolean aCoder.encode(ri
func encode(with aCoder: NSCoder){
// a Date
aCoder.encode(startDate, forKey: "startDate");
// a ()->()
aCoder.encode(handler, forKey: "handler"); //1
// a Boolean
aCoder.encode(rightAway, forKey: "rightAway");
}
我已将问题隔离在标有1的行上。如果我评论这句话,一切都正常。如果我也运行该行,则会得到
无法识别的选择器。编码闭包时是否需要特别小心?提前感谢。您会在两行中看到无法识别的选择器
错误,因为计时器
和快速关闭都不符合NSCoding
。符合协议的对象必须继承自NSObject
(Swift闭包无论如何都不会继承该对象),并实现init(coder
和encode(with:)
为什么要同时对两者进行编码?计时器是一个复杂的类,可以很容易地重新创建,闭包是一个实际上不包含任何有价值数据的函数
PS:删除后面的分号。这不是客观的-C是的,确实不是有意的(打字错误)。我编辑了原始帖子。我可以重建计时器,但是闭包呢?我有一个类,需要传递一个函数来操作,当恢复时,我仍然需要该函数。我该如何解决这个问题?你不能存储闭包…这需要你存储应用程序的整个状态。闭包是什么你正在尝试恢复吗?