Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何将NSDate转换为可读日期(单例)_Swift - Fatal编程技术网

Swift 如何将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

我正在使用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说的那么容易,因为我在一个扩展中。我想独立于任何其他课程。