Sort an array of dictionaries in Swift

ios, swift

Solution

The error message is misleading. The real problem is that the Swift compiler does not 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.

Problem

Suppose we have ``` var filesAndProperties:Dictionary<String, Any>[]=[] //we fill the array later ``` When I try sorting the array using ``` filesAndProperties.sort({$0["lastModified"] > $1["lastModified"]}) ``` Xcode says "could not find member subscript". How do I sort an array of such dictionaries by values in a specific key?

Original source