每个单元格包含日期和信息(文本)。默认情况下,排序顺序相反。它按照与时间相反的顺序排序。我想在当前日期之前更改单元格中单元格的背景颜色。
tableView cellForRowAtIndexPath:
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexpath) as! tableViewCell
cell.dateLabel.text = stores.date
cell.contentLabel.text = stores.content
let today = NSDate()
if today == (stores.date) {
cell.backgroundColor = UIColor.blueColor()
} else {
cell.backgroundColor = UIColor.clearColor()
}
return cell
答案 0 :(得分:0)
let today = NSDate()
每次调用时都会(实际上)不同,因为它会在调用它的时间内获得NSDate,直到亚毫秒。此外,使用NSDate方法isEqualToDate:
进行日期比较,因为==
将简单地比较对象引用。所以你的问题是if today == (stores.date)
总是会因为两个原因而失败。
尝试使用不太准确的日期,也许是当天,以进行此比较。您可以使用NSDateComponents
从NSDate中删除时间。
答案 1 :(得分:0)
您的日期比较错误。使用NSCalendar按天比较NSDate。这里描述了良好的NSDate扩展Getting the difference between two NSDates in (months/days/hours/minutes/seconds)
extension NSDate {
// ...
func daysFrom(date:NSDate) -> Int{
return NSCalendar.currentCalendar().components(.Day, fromDate: date, toDate: self, options: []).day
}
//...
}
在您的代码中使用此扩展程序:
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexpath) as! tableViewCell
cell.dateLabel.text = stores.date
cell.contentLabel.text = stores.content
if (stores.date.daysFrom(NSDate()) == 0) {
cell.backgroundColor = UIColor.blueColor()
} else {
cell.backgroundColor = UIColor.clearColor()
}
return cell