我想排序這種解釋的:斯威夫特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