2016-04-04 17 views
0

Ich möchte die Farbe der Zeilen in meiner Tabellenansicht in rot ändern .. wenn das Datum (Untertitel) älter als 5 Tage von heute ist. Ich habe versucht, so etwas wie: (Beispiel mit dem Textfeld Farbe)Swift Tabellenansicht Zeilenfarbe basierend auf dem Untertitel

// 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 
} 

und es funktioniert .. aber nur mit der genauen Zeit (Minuten, Sekunden). Wie kann ich dies mit nur den Tag minus 5 Tage vergleichen?

+1

Es ist schwierig, Lösungen anzubieten, wenn das Problem Aussage einfach ist, "es funktioniert nicht". Bitte [bearbeiten] Sie Ihre Frage, um eine ausführlichere Beschreibung dessen zu geben, was Sie erwarten, dass passiert und wie sich das von den tatsächlichen Ergebnissen unterscheidet. Siehe [fragen] nach Hinweisen, was eine gute Erklärung ausmacht. –

Antwort

0

Sie eine Erweiterung von NSDate verwenden:

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) 
    } 
} 

Nutzung:

// 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 

Es könnte eine grobe Methode sein, aber ich denke, dass es einfach ist, Ihre Bedürfnisse zu verstehen und einfach zu ändern und passen .

+0

Bitte verwenden Sie niemals '(60 * 60 * 24)' für Datumsberechnungen. Tage können 23, 24 oder 25 Stunden protokolliert werden - aufgrund der Sommerzeit. – vikingosegundo

+0

Sie haben Recht für allgemeine Fälle, ich habe gesagt, dass es eine grobe Methode war, aber ich werde entsprechend aktualisieren, so dass die Leute diese Antwort in Zukunft nicht kopieren werden – Emptyless

+0

aktualisieren Sie die Antwort vikingosegundo – Emptyless

Verwandte Themen