2016-03-07 116 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即将