我想为我的应用程序创建一个自定义的NumberFormatter,以便我有一些额外的属性,例如" lengthSymbol"。 但是每次我想添加一个属性都可以:
let lengthSymbol:String = "ft"
但实际上我想稍后设置属性以便我有
let lengthSymbol:String
我以为我以后可以做:
init(symbol:String) {
lengthSymbol = symbol
}
但是我得到了我必须实现的错误:
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
这是我的第一个问题:这究竟是什么?
我还必须在" init"函数 - 我收到错误"在返回初始化程序之前没有调用Super.init" 我现在该怎么做?
如果有人可以帮助我,那会很棒。)
答案 0 :(得分:2)
您需要的是变量,而不是常量。
var lengthSymbol : String?
它应该是可选的,因为无论是否设置它都很有可能。
答案 1 :(得分:0)
添加属性观察函数:
var lengthSymbol: String {
didSet {
// your initialization stuff here
}
}
中的相应章节
答案 2 :(得分:0)
如果格式化程序实例位于Nib文件中,则必须在NSCoding
上实施NSFormatter
协议。 Archiving guide可以具体告诉你这个,但是长话短说,你只需要实现scaffold方法并添加一个反序列化lengthSymbol
变量并在尾部调用super.init的方法。 p>
init(coder aDecoder: NSCoder) {
lengthSymbol = aDecoder.decodeObjectForKey("MyFormatter_LengthKey")
return super.init(coder:aDecoder)
}
您还必须实施encodeWithCoder
,但这非常简单。