У меня был этот код в моей функции 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"