У меня есть структура PrimaryUser (), переменные которой загружаются через анализатор файлов. json. Одна из этих переменных - строка даты в формате ISO8601. Я хочу, чтобы это значение автоматически преобразовывалось в переменную типа Date.
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как заставить этот код запускаться автоматически при создании PrimaryUser ():
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
self.dateOfBirth = dateFormatter.date(from: dateOfBirthISO8601)!
Если я помещу этот код в init (), я получаю сообщение об ошибке:
'self' used before all stored properties are initialized
Если я попытаюсь сделать dateOfBirth ленивой переменной, я столкнусь с этой ошибкой:
Lazy properties must have an initializer
Еще раз повторяю, все переменные PrimaryUser () будут инициализированы данными из файла. json через синтаксический анализатор, который полностью отделен от PrimaryUser (). Так что нет смысла инициализировать переменные внутри PrimaryUser ().
Вот как выглядит PrimaryUser ():
import Foundation
import SwiftUI
struct PrimaryUser: User, Hashable, Codable, Identifiable {
var id: Int
var firstName: String
var lastName: String
var dateOfBirthISO8601: String
lazy var dateOfBirth: Date
init() {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
self.dateOfBirth = dateFormatter.date(from: dateOfBirthISO8601)!
}
}