2016-03-07 104 views
0

我正在使用懶惰地圖集合保存數據,並使用此默認函數通過使用名稱(這是現有字段之一)對數組進行排序,現在我想使用日期對其進行排序這已經保存在一個參數中。我應該如何做到這一點。在懶惰地圖集合中按日期快速排序

let resultingSecs = secs.values.map { uts in 
     (uts.0, uts.1.sort(<)) 
    }.sort { (luts, ruts) -> Bool in 
     luts.0.name < ruts.0.name 
    } 

秒是一個數組var secs: [UUID: (User, [Timeline])] = [:]

let resultingSecs = secs.values.map { uts in 
     (uts.0, uts.1.sort(<)) 
    }.sort { (luts, ruts) -> Bool in 
     var date1 = luts.0.updated_at 
     var date2 = ruts.0.updated_at 

     var dateFormatter = NSDateFormatter() 
     dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
     let status:Bool = dateFormatter.dateFromString(date1)?.compare(dateFormatter.dateFromString(date2)!) == NSComparisonResult.OrderedAscending 
    return status 
    } 

現在我特林這個上面的代碼

+1

我不明白這個_「我想排序它使用已保存的日期之一的參數」_。你想用什麼作爲排序標準? – courteouselk

+0

我有一個具有不同timlelines(用戶)數據的數組,並且目前它們正按照用戶名進行排序,如代碼中所示,我想按日期對它們進行排序.... –

+0

您的代碼似乎足夠好。但我會使用'dateFormatter.dateFromString(date1)!而不是?',因爲如果dateFromString爲null,那麼行爲會非常直觀。此外,它似乎暗示在您的代碼中,這種情況不應該發生 –

回答

0
let resultingSecs = secs.values.map { uts in 
    (uts.0, uts.1.sort(<)) 
}.sort { (luts, ruts) -> Bool in 
    var date1 = luts.0.updated_at 
    var date2 = ruts.0.updated_at 

    var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
    let status:Bool = dateFormatter.dateFromString(date1)?.compare(dateFormatter.dateFromString(date2)!) == NSComparisonResult.OrderedAscending 
return status 
} 

的問題是使用此代碼解決了使用。問題是我的日期1的價值和日期2即將