在如下所示的结构初始化中使用 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
}
// ...
}
}
最佳答案
只需将其分配给一个属性:
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
}()
}
关于swift - 如何在结构中存储静态 DateFormatter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358684/