Непоследовательное поведение между, казалось бы, идентичными блоками let - PullRequest
0 голосов
/ 08 октября 2018

У меня был этот код в моей функции cellForRowAt:

if let modifiedDate = deliveryItem.modifiedDate?.toString(format: "M/d/yy"), let modifiedBy = deliveryItem.modifiedBy {
    cell.detailTextLabel?.text += "   (MODIFIED: \(modifiedDate) BY: \(modifiedBy))"
}

Но он пропускал внутреннюю строку, даже если оба свойства имели значения, отличные от нуля.По какой-то причине я попытался переместить вызов toString на внутреннюю линию:

if let modifiedDate = deliveryItem.modifiedDate, let modifiedBy = deliveryItem.modifiedBy {
    cell.detailTextLabel?.text += "   (MODIFIED: \(modifiedDate.toString(format: "M/d/yy")) BY: \(modifiedBy))"
}

И вдруг он начал работать и выдавать ожидаемый результат.Насколько я могу судить, эти две части кода кажутся функционально идентичными, поэтому я не понимаю, почему это не сработало с первого раза.Я даже попытался запустить deliveryItem.modifiedDate?.toString(format: "M/d/yy") в консоли, просто чтобы убедиться, и он вернул ненулевое значение.

Вот функция toString, но я не вижу здесь ничего, что могло бы повлиять на развертываниелибо значение:

extension Date {
    func toString (format: String?) -> String {
        guard let format = format else {
            return ""
        }

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = format
        return dateFormatter.string(from: self)
    }
}

Пример данных, которые должны были быть переданы:

modifiedDate = (Date?) 2018-10-05 23:50:00 UTC
modifiedBy = (String?) "SC"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...