gpt4 book ai didi

swift - 日期总是在同一时间返回

转载 作者:可可西里 更新时间:2023-11-01 00:19:44 24 4
gpt4 key购买 nike

我在 String 上设置了一个扩展,以相同的格式返回当前日期,这样代码中的任何地方都可以调用它并使用相同的格式,从而保持一致性。我的代码是

extension String {
static let dateString = DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)
}

唯一的问题是,当我调用它时,会返回相同的确切时间,直到应用程序被终止。如果我使用 Date() 那么它应该每次都使用一个新值,对吧?为什么不是这样?

最佳答案

一个(静态的)存储的属性只被初始化一次(在第一次访问时)。比较 Properties在“The Swift Programming Language”中:

Stored type properties are lazily initialized on their first access. They are guaranteed to be initialized only once, even when accessed by multiple threads simultaneously, and they do not need to be marked with the lazy modifier.

您想要的是一个计算属性:

extension String {
static var dateString: String {
return DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)
}
}

备注:正如 Leo Dabus 所说,它作为 Date 的实例属性更有意义。这是取自 NSDate() or Date() shows the wrong time 的示例:

extension Date {
func localString(dateStyle: DateFormatter.Style = .medium, timeStyle: DateFormatter.Style = .medium) -> String {
return DateFormatter.localizedString(from: self, dateStyle: dateStyle, timeStyle: timeStyle)
}
}

关于swift - 日期总是在同一时间返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52519281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com