【发布时间】:2019-09-22 14:38:16
【问题描述】:
我对这一切都是新手,所以请原谅我的无知!我有一个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)
}
}
}
这是调用它的表视图函数 (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
}
【问题讨论】:
-
这段代码是不是 cell.update 函数的一部分?你能展示一下你是如何调用 cell.update 函数的吗?
-
嗨 @AntonVlasov 我已经添加了我的 Table View cellForRowAt 函数,我从中调用它。
-
所以你的代码可以工作,但你想提高它的性能?
-
@AntonVlasov 是的,我只是不确定这是否适用于在多个数据单元格上调用更新函数的真实场景。另外,如果 if 和 case 块可以用另一种方式编写,那么它会更简洁吗?
标签: ios swift uitableview date nsdate