gpt4 book ai didi

ios - Swift 避免在初始化器中重复代码

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:54 25 4
gpt4 key购买 nike

如何避免在初始化器之间重复代码?我希望 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)
}

最佳答案

如果这是真的,则实际代码将整个代码替换为

lazy var dateFormatter : NSDateFormatter = {
let formatter = NSDateFormatter()
formatter.dateStyle = .MediumStyle
formatter.timeStyle = .MediumStyle
return formatter
}()

变量在第一次被访问时延迟初始化一次

编辑:也可以在没有惰性属性的情况下将变量声明为常量。

let dateFormatter : NSDateFormatter = { ...

区别在于格式化程序是在实例初始化期间立即创建的(不是懒惰地)。

编辑:

在 Swift 3 中,NSDateFormatter 已重命名为 DateFormatter
.MediumStyle.mediumStyle

关于ios - Swift 避免在初始化器中重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com