我有一个名为Alarm的类继承自NSObject,在其中,我有一个我遇到问题的属性,alarmLastTriggeredDate:
a={1: 'a', 2: 'b', 3: 'c', 4: 'd'}
c=[a[x] for x in set(a.keys()) & set([1,2,3])]
b=['a', 'b', 'c']
我是Swift的新手,不知道为什么我会收到以下错误:
class Alarm: NSObject {
var alarmLastTriggeredDate: NSDate
override init() {
super.init()
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(alarmLastTriggeredDate, forKey: "alarmLastTriggeredDate")
}
required init(coder aDecoder: NSCoder) {
if let alarmLastTriggeredDateDecoded = aDecoder.decodeObjectForKey("alarmLastTriggeredDate") as? NSDate
{
alarmLastTriggeredDate = alarmLastTriggeredDateDecoded
}
}
}
似乎修复此问题的唯一方法是在两个地方初始化它,但这是冗余代码,似乎是错误的。我错过了什么吗?
答案 0 :(得分:1)
编译器必须确保每个非可选属性都成功initialized:
super init
的调用之前这就是为什么你需要在机器人初始化器中填充alarmLastTriggeredDate
的原因。
不,它不是冗余代码,因为有人可以使用2个初始化程序之一来创建Alarm
对象。