我想排序这种解释的:斯威夫特2 - 排序辞典的NSDate() - 键
var data = [NSDate: [String: AnyObject]]()
例如
data: [2015-08-29 12:08:29 +0000: ["foo": "bar"]],
[2015-08-29 12:05:13 +0000: ["foo": "bar"]],
[2015-08-29 12:11:02 +0000: ["foo": "bar"]]
那么应该是:
dataSorted: [2015-08-29 12:05:13 +0000: ["foo": "bar"]],
[2015-08-29 12:08:29 +0000: ["foo": "bar"]],
[2015-08-29 12:11:02 +0000: ["foo": "bar"]]
我想:
let dataSorted = Array(data.keys).sorted(<)
// Could not find an overload for '<' that accepts the supplied arguments
和
let dataSorted = sorted(data) { $0.0 < $1.0 }
// Could not find member '0'
'results'的类型为[[(NSDate,[String:AnyObject])],而不是[NSDate,[String:AnyObject]]'。我该如何纠正? 'let results = data.sort {$ 0.0 <$ 1.0}'也给我类型[[(NSDate,[String:AnyObject])]'。 – PhilHarmonie
@PhilHarmonie正如@Kirsteins所说,字典无法排序(无序集合)。因此你必须返回一个“有序集合”('Array')元组''(Key,Value)''。 – Qbyte
@Qbyte是的没关系,但排序后的数组/字典它应该有相同的类型。如果这是对它进行排序的唯一方法,那么如何将该类型更改回原始类型,但使用排序后的内容?或者它的字典内容总是随机的? – PhilHarmonie