Не присваивается значение Date? в переменную

Задача состоит в том, чтобы в объекте класса WeekReport в инициализаторе из нескольских объектов класса jog взять раннюю и позднюю дату(эти даты на одной неделе, фильтруется в другом классе), ппосчитатать день недели этих дат и создать из них дату понедельника и воскресенья той же недели. В инициализаторе я беру секунды с 1970 года, потом в компюьтед проперти считаю fromDate и toDate. И если выводить это в po debugger то значение получается то, что нужно. Но когда беру его в label там везде nil и в итоге получаю рандомные даты.

public var formatter: DateFormatter {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd.MM.yyyy"
    formatter.timeZone = TimeZone(abbreviation: "UTC")
    return formatter
}

@objc class Jog: NSObject, Decodable {

    var id: Int?
    var distance: Float?
    var time: Int?
    var dateInt: Int?
    var userID: String?

    var speed: Int {
        if let distance = self.distance, let time = self.time {
            return round(distance/Float(time)) <= Float(Int.max) ? Int(round(distance/Float(time))) : Int.max
        }
        return 0
    }

    var date: Date? {
        get {
            let date = Date(timeIntervalSince1970: TimeInterval(dateInt ?? 0))
            return Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: date))
        }
    }

    var weekday: Int {
        return Calendar.current.dateComponents([.weekday], from: self.date ?? Date()).weekday ?? 0
    }
}




class WeekReport {

    var from: Int?
    var to: Int?
    var averageSpeed: Int?
    var averageTime: Int?
    var totalDistance: Float?

    var fromDate: Date? {
        let date = Date(timeIntervalSince1970: TimeInterval(from ?? 0))
        let day = Calendar.current.dateComponents([.weekday], from: date).weekday ?? 0
        return Calendar.current.date(byAdding: .day, value: 1 - day, to: date)
    }

    var toDate: Date? {
        let date = Date(timeIntervalSince1970: TimeInterval(to ?? 0))
        let day = Calendar.current.dateComponents([.weekday], from: date).weekday ?? 0
        return Calendar.current.date(byAdding: .day, value: 7 - day, to: date)
    }

    init(jogs: [Jog]?) {
        guard let jogs = jogs else {return}
        let sortedJogs = jogs.sorted {$0.dateInt ?? 0 < $1.dateInt ?? 0}
        self.from = sortedJogs.first?.dateInt
        self.to = sortedJogs.last?.dateInt
        var distance: Float = 0
        var totalTime: Int = 0
        for jog in sortedJogs {
            distance += jog.distance ?? 0
            totalTime += jog.time ?? 0
        }
        self.totalDistance = distance
        self.averageTime = sortedJogs.count != 0 ? totalTime / sortedJogs.count : 0
        let a = round(totalTime != 0 ? distance / Float(totalTime) : 0)

        self.averageSpeed = a <= Float(Int.max) ? Int(a) : Int.max
    }
}

Это уже в ячейке:

self.dateLabel.text = "Week \(number): (\(formatter.string(from: report.fromDate ?? Date())) / \(formatter.string(from: report.fromDate ?? Date())))"

Ответы (0 шт):