2016-04-04 52 views
0

如果日期(小标题)比今天早5天,我想将tableview中的行颜色更改为红色。我想是这样的:(例如与文本框颜色)Swift tableview row color based on subtitle

// Configure the cell... 

    cell.textLabel?.textColor = UIColor.blueColor() 
    cell.detailTextLabel?.textColor = UIColor.darkGrayColor() 

    let item = frc.objectAtIndexPath(indexPath) as! Item 
    cell.textLabel?.text = item.name! + "-" + item.etage! + "-" + item.raum! 
    let note = item.date 
    cell.detailTextLabel!.text = "\(note!)" 

    if note == "04.04.2016 20:31:55" { 
     cell.detailTextLabel?.textColor = UIColor.redColor() 
    } else { 

    } 


    return cell 
} 

和它的作品..但只有在准确的时间(分,秒)。 我如何才能做到这一点,比较只有一天减去5天?

+1

当问题 陈述简单地“它不起作用”时,很难提供解决方案。请编辑您的 问题,以更全面地描述您的 预期会发生什么,以及与实际的 结果有何不同。请参阅[问]提示什么使得一个好的 解释。 –

回答

0

可以使用的NSDate的扩展:

extension NSDate { 
    func numberOfDaysRoundedUp(toDateTime : NSDate) -> Int { 
     let calendar = NSCalendar.currentCalendar() 
     let components = calendar.components(NSCalendarUnit.Day, fromDate: self, toDate: toDateTime, options: []) 
     return abs(components.day) 
    } 

    func olderThanFiveDays(toDateTime : NSDate) -> Bool { 
     return (numberOfDaysRoundedUp(toDateTime) > 5) 
    } 
} 

用法:

// Today (4 April 2016 - 19:16:14) 
let date : NSDate = NSDate() 

// 1 April 2016 - 19:16:14 
let aprilFirst : NSDate = NSDate(timeIntervalSince1970: NSTimeInterval(1459538184)) 
// 1 March 2016 - 19:29:00 
let marchFirst : NSDate = NSDate(timeIntervalSince1970: NSTimeInterval(1456860540)) 

print(date.numberOfDaysRoundedUp(aprilFirst)) // 3 
print(date.olderThanFiveDays(aprilFirst)) // False 

print(date.numberOfDaysRoundedUp(marchFirst)) // 34 
print(date.olderThanFiveDays(marchFirst)) // True 

这可能是一个粗略的方法,但我认为这是很容易理解和容易改变和适应您的需求。

+0

请不要使用'(60 * 60 * 24)'进行日期计算。由于DST,日期可以是23,24或25小时日志。 – vikingosegundo

+0

您对一般情况适用,我确实说这是一个粗略的方法,但我会相应地更新,以免人们今后不会复制这个答案 – Emptyless

+0

更新答案vikingosegundo – Emptyless