Дата всегда возвращается в одно и то же время - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть расширение, настроенное на String, чтобы возвращать текущую дату в том же формате, чтобы в любом месте кода ее можно было вызывать и использовать один и тот же формат, что обеспечивает согласованность.Мой код:

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

Единственная проблема заключается в том, что при его вызове возвращается одинаковое точное время, пока приложение не будет убито.Если я использую Date(), тогда каждый раз следует использовать новое значение, верно?Почему это не так?

1 Ответ

0 голосов
/ 26 сентября 2018

A (статическое) сохраненное свойство инициализируется ровно один раз (при первом доступе).Сравните Свойства в «Языке программирования Swift»:

Свойства хранимого типа лениво инициализируются при первом доступе.Они гарантированно инициализируются только один раз, даже при одновременном доступе к нескольким потокам, и их не нужно отмечать модификатором lazy.

То, что вы хотите - это вычисляемое свойство :

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

Примечание: Как говорит Лео Дабус, это имеет больше смысла как свойство экземпляра Date.Вот пример, взятый из NSDate () или Date () показывает неправильное время :

extension Date {
    func localString(dateStyle: DateFormatter.Style = .medium, timeStyle: DateFormatter.Style = .medium) -> String {
        return DateFormatter.localizedString(from: self, dateStyle: dateStyle, timeStyle: timeStyle)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...