質問するログイン新規登録

回答編集履歴

3

修正

2016/08/26 04:21

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -1,4 +1,4 @@
1
- 以下のようにすることで抽出、ソートできます、試してみてください。
1
+ `reduce`を使用してみました、以下のようにすることで抽出、ソートできます、試してみてください。
2
2
  ※ 2つの配列を一緒に作成しているので若干読みにくいかも、、、
3
3
 
4
4
  ロジック部分のみ

2

修正

2016/08/26 04:21

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -11,14 +11,15 @@
11
11
  var result1 = resultTuple.0
12
12
  var result2 = resultTuple.1
13
13
 
14
- let dateStr = (str as NSString).substringToIndex(7)
14
+ let yearStr = (str as NSString).substringToIndex(7)
15
15
  let dayStr = (str as NSString).substringFromIndex(8)
16
16
 
17
- if !result1.contains(dateStr) {
17
+ if !result1.contains(yearStr) {
18
- result1 += [dateStr]
18
+ result1 += [yearStr]
19
19
 
20
20
  let array = [dayStr]
21
21
  result2.append(array)
22
+
22
23
  } else {
23
24
  result2[result2.count - 1].append(dayStr)
24
25
  }
@@ -40,36 +41,32 @@
40
41
  class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
41
42
 
42
43
  @IBOutlet weak var tableView: UITableView!
43
-
44
-
45
44
  var sectionTitleArray: [String] = []
45
+ var sectionDataArray: [[String]] = []
46
46
 
47
47
  // Date Array
48
48
  var dataArray = ["2016/08/26", "2016/08/26", "2016/08/26", "2016/08/01", "2016/07/27", "2016/05/26", "2016/05/25", "2015/02/21"]
49
- var sectionDataArray: [[String]] = []
50
49
 
51
50
  override func viewDidLoad() {
52
51
  super.viewDidLoad()
53
52
 
54
- let resultArray: ([String], [[String]]) = dataArray.reduce(([],[])) { (resultTuple, str) -> ([String], [[String]]) in
53
+ let resultArray = dataArray.reduce(([],[])) { (resultTuple, str) -> ([String], [[String]]) in
55
54
 
56
55
  var result1 = resultTuple.0
57
56
  var result2 = resultTuple.1
58
57
 
59
- let dateStr = (str as NSString).substringToIndex(7)
58
+ let yearStr = (str as NSString).substringToIndex(7)
60
59
  let dayStr = (str as NSString).substringFromIndex(8)
61
60
 
62
- if !result1.contains(dateStr) {
61
+ if !result1.contains(yearStr) {
63
- result1 += [dateStr]
62
+ result1 += [yearStr]
64
63
 
65
64
  let array = [dayStr]
66
65
  result2.append(array)
67
66
 
68
67
  } else {
69
-
70
68
  result2[result2.count - 1].append(dayStr)
71
69
  }
72
-
73
70
  return (result1, result2)
74
71
  }
75
72
 
@@ -81,8 +78,6 @@
81
78
  tableView.rowHeight = UITableViewAutomaticDimension
82
79
  }
83
80
 
84
-
85
-
86
81
  // MARK: - TableView Delegate & DataSource
87
82
 
88
83
  func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

1

修正

2016/08/26 04:18

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  ```swift
7
7
  var dataArray = ["2016/08/26", "2016/08/26", "2016/08/26", "2016/08/01", "2016/07/27", "2016/05/26", "2016/05/25", "2015/02/21"]
8
8
 
9
- var resultArray: ([String], [[String]]) = dataArray.reduce(([],[])) { (resultTuple, str) -> ([String], [[String]]) in
9
+ var resultArray = dataArray.reduce(([],[])) { (resultTuple, str) -> ([String], [[String]]) in
10
10
 
11
11
  var result1 = resultTuple.0
12
12
  var result2 = resultTuple.1