回答編集履歴
2
add simpler method
test
CHANGED
@@ -1,3 +1,33 @@
|
|
1
|
+
追記:fuzzballさんより、問題のフォーマットなら、日付順がちょうど辞書順と同じなので、直接比較しても大丈夫です。教えてくれてありがとうございます!
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
```swift
|
6
|
+
|
7
|
+
var dictionary_box:[[String:String]] =
|
8
|
+
|
9
|
+
[["name": "たろう", "money": "1000円", "birth_date": "2020年05月15日"],
|
10
|
+
|
11
|
+
["name": "じろう", "money": "20000円", "birth_date": "2020年05月20日"],
|
12
|
+
|
13
|
+
["name": "としろう", "money": "1001円", "birth_date": "2020年05月18日"]]
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
let sorted = dictionary_box.sorted { $0["birth_date"]! > $1["birth_date"]! }
|
18
|
+
|
19
|
+
```
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
元の回答:
|
28
|
+
|
29
|
+
|
30
|
+
|
1
31
|
```swift
|
2
32
|
|
3
33
|
var dictionary_box: [[String : String]] =
|
1
コード修正
test
CHANGED
@@ -32,12 +32,22 @@
|
|
32
32
|
|
33
33
|
let day = Int($0[db...de])!
|
34
34
|
|
35
|
+
// print(year, month, day)
|
36
|
+
|
35
37
|
return (year, month, day)
|
36
38
|
|
37
39
|
}
|
38
40
|
|
39
|
-
return d[0].0
|
41
|
+
return d[0].0 != d[1].0 ? d[0].0 > d[1].0
|
42
|
+
|
43
|
+
: d[0].1 != d[1].1 ? d[0].1 > d[1].1
|
44
|
+
|
45
|
+
: d[0].2 > d[1].2
|
40
46
|
|
41
47
|
}
|
42
48
|
|
43
49
|
```
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
修正:ただ年月日の比較を`||`(OR)で繋がったら、年か月か日か一つだけ大きいの方が前にしてしまいます。上記のようで、年が同じの場合だけ月を比較していいです。
|