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

标签 swift

在如下所示的结构初始化中使用 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/

相关文章:

swift - 类属性分配与协议(protocol)所需的属性分配不同(内部示例)?

SwiftUI:如何迭代可绑定(bind)对象的数组?

ios - 获取 LinkedIn 联系人/连接

swift - 无法推断通用参数 'A'(从 Swift 2 迁移的 Swift 4、Bond 和 ReactiveKit 框架)

ios - 在 Storyboard 中将 UIStackView 添加为空容器

ios - 后台位置跟踪不适用于物理设备 swift

ios - 在 iOS Swift 中下载 mp3 格式的 youtube 视频

iOS : Black screen appears when run my app

Swift 无法将字符串日期解析为 Date 对象

ios - 即使应用程序快速关闭,如何处理推送通知