编码/解码[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在尝试根据NSCoding协议编码一些类属性:

 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的行上。如果我评论该行,一切运行正常。如果我也运行那条线,我得到unrecognized selector。编码闭包时是否需要特别注意?提前致谢。

swift nscoding
1个回答
1
投票

你在两条线上都得到unrecognized selector错误,因为Timer和Swift闭合都不符合NSCoding。符合协议的对象必须继承自NSObject(无论如何都不是Swift闭包)并实现init(coderencode(with:)

你为什么要编码? Timer是一个复杂的类,可以很容易地重新创建,闭包是一个实际上不包含任何有价值数据的函数。

PS:删除尾随的分号。这不是Objective-C

© www.soinside.com 2019 - 2024. All rights reserved.