如何在结构中存储静态DateFormatter?

问题描述 投票:1回答:1

在像下面这样的结构初始化中使用DateFormatter时,缓存该格式化程序的最简洁方法是什么?

struct Entry {
    let date: Date
    // ...

    init?(string: String) {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
        if let date = dateFormatter.date(from: string) {
            self.date = date
        } else {
            return nil
        }
        // ...
    }
}
swift
1个回答
5
投票

只需将其分配给一个属性:

struct Entry {
    let dateFormatter: DateFormatter
    // ...

    init?(string: String) {
        let df = DateFormatter()
        df.dateFormat = "yyyy-MM-dd hh:mm:ss"
        dateFormatter = df
        // ...
    }
}

但是,由于日期格式化程序的创建成本有些高,因此将这些作为静态属性非常常见,因此对于每个实例,只有一个类型而不是一个类型。

struct Entry {
    private static let dateFormatter: DateFormatter = {
        let df = DateFormatter()
        df.dateFormat = "yyyy-MM-dd hh:mm:ss"
        return df
    }()
 }
© www.soinside.com 2019 - 2024. All rights reserved.