在DateFormatter如下面的结构的初始化中使用a 时,缓存该格式化程序的最简洁方法是什么?
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
}
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
只需将其分配给一个属性:
struct Entry {
let dateFormatter: DateFormatter
// ...
init?(string: String) {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd hh:mm:ss"
dateFormatter = df
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于日期格式化程序的创建成本有些高,因此将这些作为静态属性非常常见,因此对于每个实例,只有一个类型而不是一个类型.
struct Entry {
private static let dateFormatter: DateFormatter = {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd hh:mm:ss"
return df
}()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |