如何避免在初始化程序之间重复代码?我希望dateFormatter保持let常量.
let dateFormatter: NSDateFormatter
init() {
dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
super.init(coder: aDecoder)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
Run Code Online (Sandbox Code Playgroud)
如果这确实是实际的代码替换整个代码
lazy var dateFormatter : NSDateFormatter = {
let formatter = NSDateFormatter()
formatter.dateStyle = .MediumStyle
formatter.timeStyle = .MediumStyle
return formatter
}()
Run Code Online (Sandbox Code Playgroud)
该变量在第一次访问时会被懒惰地初始化一次
编辑:也可以在没有惰性属性的情况下将变量声明为常量.
let dateFormatter : NSDateFormatter = { ...
Run Code Online (Sandbox Code Playgroud)
不同之处在于格式化程序是在实例初始化期间立即(不是懒惰地)创建的.
编辑:
在斯威夫特3 NSDateFormatter已更名为DateFormatter
和.MediumStyle到.mediumStyle
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |