2016-04-04 38 views
0

Tablo görünümündeki satırların rengini kırmızıya çevirmek istiyorum .. tarih (altyazı) bugün 5 günden eskiyse. Ben böyle bir şey denedim: (textfield renk ile örnek)Altyazı tabanından başlayan Swift tableview satır rengi

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

ve .. ama yalnızca tam zamanında (dakika, saniye) ile çalışır. Bunu yalnızca eksi 5 günle kıyaslayarak nasıl yapabilirim?

Sen NSDate bir uzantısını kullanabilirsiniz
+1

bildirimi yalnızca "çalışmıyor" sorunu olduğunda çözüm önermek zor. Lütfen beklentilerinizin daha tam bir açıklaması ve gerçek sonuçlarının farkı nedir? İyi bir açıklaması yapan ipuçlarını görmek için [sor] 'a bakın. –

cevap

0

:

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

kullanımı:

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

Zor bir yöntem olabilir ama bunu anlamak kolay ve değiştirmek kolaydır olduğunu düşünüyorum ve ihtiyaçlarınıza uygun .

+0

lütfen tarih hesaplamaları için asla '(60 * 60 * 24)' kullanmayın. Günler, 23, 24 veya 25 saatlik bir gün olabilir - DST nedeniyle. – vikingosegundo

+0

Genel durumlar için haklısınız, bunun kaba bir yöntem olduğunu söyledim, ancak insanlar bu cevabı gelecekte kopyalamayacak şekilde güncelledim – Emptyless

+0

cevabını güncelle vikingosegundo – Emptyless