Sort an array of dictionaries in Swift
The error message is misleading. The real problem is that the Swift compiler doesnot know what type of object $0["lastModified"]
is and how to compare them.
So you have to be a bit more explicit, for example
filesAndProperties.sort { item1, item2 in let date1 = item1["lastModified"] as Double let date2 = item2["lastModified"] as Double return date1 > date2}
if the timestamps are floating point numbers, or
filesAndProperties.sort { item1, item2 in let date1 = item1["lastModified"] as NSDate let date2 = item2["lastModified"] as NSDate return date1.compare(date2) == NSComparisonResult.OrderedDescending}
if the timestamps are NSDate
objects.
Here, The problem is that compiler unable to understand type that what of object $0["lastModified"] is.
if the timestamps are floating point numbers:-
filesAndProperties = filesAndProperties.sorted(by: { (($0 as! Dictionary<String, AnyObject>)["lastModified"] as? Double)! < (($1 as! Dictionary<String, AnyObject>)["lastModified"] as? Double)! })