Я только новичок во всем этом, так что прости мое невежество!У меня есть Table View
, к которому я вызываю метод обновления ячейки каждый раз, когда открываю сцену (сортируется по дате).Я пытаюсь динамически показать другой формат даты в зависимости от того, когда объект был последний раз редактировался.Пример: Показать время, если дата сегодня, Показать «Вчера», если дата была вчера и т. Д. Мой вопрос: каков наилучший способ написать это и вызывает ли вызов функции ниже в моем вызове cell.update, который будет интенсивно использовать память?Как я могу написать это лучше?Любая помощь будет принята с благодарностью!
func update(with fitnessInfo: Fitness) {
if let date = fitnessInfo.dateEdited as Date? {
let today = Calendar.current.isDateInToday(date)
let yesterdayFunc = Calendar.current.isDateInYesterday(date)
let yesterday = date.addingTimeInterval(172800)
let withinSevenDays = date.addingTimeInterval(604800)
let dateFormatter = DateFormatter()
func setdate(_ dateFormatter: DateFormatter) {
let convertedDate = dateFormatter.string(from: date)
fitnessDateLabel.text = convertedDate
}
if today == true {
dateFormatter.dateFormat = "h:mm a"
setdate(dateFormatter)
} else if yesterdayFunc == true {
fitnessDateLabel.text = "Yesterday"
} else {
switch date {
case yesterday...withinSevenDays:
dateFormatter.dateFormat = "EEEE"
setdate(dateFormatter)
default:
dateFormatter.dateFormat = "MMMM dd, yyyy"
setdate(dateFormatter)
}
}
}
Вот функция Table View (cellForRowAt), из которой она вызывается.
tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: “fitnessCell", for: indexPath) as! FitnessTableViewCell
let fitnessInfo = fetchedRC.object(at: indexPath)
cell.update(with: fitnessInfo)
return cell
}