Swift 如何将NSDate转换为可读日期(单例)
我正在使用NSDate的扩展:Swift 如何将NSDate转换为可读日期(单例),swift,Swift,我正在使用NSDate的扩展: extension NSDate { func toDayMonthYear() -> String { let formatter = NSDateFormatter() formatter.dateFormat = "dd.MM.yy" return formatter.stringFromDate(self) } } 这样,我可以轻松地将任何值转换为NSDate print(NSDate
extension NSDate {
func toDayMonthYear() -> String {
let formatter = NSDateFormatter()
formatter.dateFormat = "dd.MM.yy"
return formatter.stringFromDate(self)
}
}
这样,我可以轻松地将任何值转换为NSDate
print(NSDate().toDayMonthYear) => "12.11.2015"
但我知道每次调用它时,都会创建一个NSDateFormatter实例,这在性能方面是灾难性的
如何才能更优雅地执行此操作?您可以定义静态属性(仅分配一次) 本地在函数或(扩展)方法中,但需要将其嵌入到结构中:
extension NSDate {
func toDayMonthYear() -> String {
struct Statics {
static var formatter : NSDateFormatter = {
let fmt = NSDateFormatter()
fmt.dateFormat = "dd.MM.yy"
return fmt
}()
}
return Statics.formatter.stringFromDate(self)
}
}
调用toDayMonthYear()的频率是多少?通常的用法似乎很好,经常使用。这就是我担心性能的原因。这并不像Martin R说的那么容易,因为我在一个扩展中。我想独立于任何其他课程。