回答編集履歴

3

答えを追記

2019/10/27 17:33

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -1,13 +1,111 @@
1
- まだ途中ですが、どうもCollection継承だとgetしかできないみたいなので、
1
+ ~~まだ途中ですが、~~どうもCollection継承だとgetしかできないみたいなので、
2
2
 
3
- setも利用するにはMutableCollectionを継承するに変更しないといけないみたいです。
3
+ # setも利用するにはMutableCollectionを継承する
4
+
5
+ に変更しないといけないみたいです。
4
6
 
5
7
 
6
8
 
7
9
  そのように変更し、試行錯誤中です。
8
10
 
9
- 書き換え途中ですが、やはり詰まってしまいました。
11
+ ~~書き換え途中ですが、やはり詰まってしまいました。~~
10
12
 
11
13
 
12
14
 
15
+ # stackOverflowでいいサンプル
16
+
17
+ があり、最終的に以下のコードで実現できました。
18
+
19
+
20
+
21
+ var cells = TempCells()をより構造的に強固なletで定義したかったですが、
22
+
23
+ そうすると、メンバ変数にできないので、無理みたいなので、これで解決とします。
24
+
25
+
26
+
27
+ ```Swift
28
+
29
+ import UIKit
30
+
31
+
32
+
33
+ class ViewController: UIViewController {
34
+
35
+
36
+
37
+ override func viewDidLoad() {
38
+
39
+ super.viewDidLoad()
40
+
41
+ // Do any additional setup after loading the view.
42
+
43
+
44
+
45
+ var cells = TempCells()
46
+
47
+ print("old", cells.description)
48
+
49
+ cells.rewriteName(firstName: "大阪", lastName: "太郎")
50
+
51
+ print("new", cells.description)
52
+
53
+ }
54
+
55
+ }
56
+
57
+
58
+
59
+ struct TempCells: MutableCollection {
60
+
61
+ var cells: [PresentCell] = []
62
+
63
+
64
+
65
+ init() {
66
+
67
+ self.cells = [PresentCell.name(NameData(firstName: "東京", lastName: "太郎")),
68
+
69
+ PresentCell.birthday(DateData(date: Date().addingTimeInterval(-60*60*24*365*20).timeIntervalSince1970)),
70
+
71
+ PresentCell.university(SchoolData(university: "東京大学"))]
72
+
73
+ }
74
+
75
+
76
+
77
+ var description: String { return cells.description }
78
+
79
+ var startIndex: Int { return 0 }
80
+
81
+ var endIndex: Int { return cells.count }
82
+
83
+
84
+
85
+ func index(after i: Int) -> Int { return i + 1 }
86
+
87
+
88
+
89
+ subscript(position: Int) -> PresentCell {
90
+
91
+ get { return cells[position] }
92
+
93
+ set(newValue) { cells[position] = newValue }
94
+
95
+ }
96
+
97
+
98
+
99
+ mutating func rewriteName(firstName: String, lastName: String) {
100
+
101
+ self[0] = PresentCell.name(NameData(firstName: firstName, lastName: lastName))
102
+
103
+ }
104
+
105
+ }
106
+
107
+ ```
108
+
109
+
110
+
13
- ![イメージ説明](afa7960292ec1ac836368b10aa39bc5a.png)
111
+ ![イメージ説明](d2a6d148e5a81f7d589698a0f0dbbee1.png)

2

追加

2019/10/27 17:33

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -5,3 +5,9 @@
5
5
 
6
6
 
7
7
  そのように変更し、試行錯誤中です。
8
+
9
+ 書き換え途中ですが、やはり詰まってしまいました。
10
+
11
+
12
+
13
+ ![イメージ説明](afa7960292ec1ac836368b10aa39bc5a.png)

1

追記

2019/10/27 17:00

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -1,7 +1,7 @@
1
1
  まだ途中ですが、どうもCollection継承だとgetしかできないみたいなので、
2
2
 
3
- MutableCollection継承に変更する必要があるみたいで、、、
3
+ setも利用するにはMutableCollection継承するに変更しないといけないみたいです。
4
4
 
5
5
 
6
6
 
7
- 試行錯誤中です。
7
+ そのように変更し、試行錯誤中です。