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?
Swift Dictionary sorted()The sorted() method sorts a dictionary by key or value in a specific order (ascending or descending).
To sort the array we use the sort() function. This function is used to sort the elements of the array in a specified order either in ascending order or in descending order. It uses the “>” operator to sort the array in descending order and the “<” operator to sort the array in ascending order.
To sort the values in ascending order, you can use the < operator. Otherwise, you can use the > operator to sort the swift dictionary in descending order.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With