我有一个名为name的实例变量,其类型为String。
var name: String
我的类实现了NSCoding协议。因此,对于名称,我有:
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.name, forKey: kName)
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey(kName) as String // CRASH HERE
}
结果?在解码器初始化期间发生了运行时崩溃。我将init更改为以下内容:
var temp = aDecoder.decodeObjectForKey(kName) as NSString!
self.name = aDecoder.decodeObjectForKey(kName) as String
我意识到temp变量保存了正确的NSString值。因此,我认为下面这行代码会解决问题,但它却出现了链接错误:
self.name = aDecoder.decodeObjectForKey(kName) as NSString!
问题是如何将温度采集并将其放入名称中?
self.name = aDecoder.decodeObjectForKey(kName) as AnyObject! as String
- Maxim Shoustin