回答編集履歴
3
答えを追記
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
|
-
![イメージ説明](af
|
111
|
+
![イメージ説明](d2a6d148e5a81f7d589698a0f0dbbee1.png)
|
2
追加
test
CHANGED
@@ -5,3 +5,9 @@
|
|
5
5
|
|
6
6
|
|
7
7
|
そのように変更し、試行錯誤中です。
|
8
|
+
|
9
|
+
書き換え途中ですが、やはり詰まってしまいました。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
![イメージ説明](afa7960292ec1ac836368b10aa39bc5a.png)
|
1
追記
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
|
+
そのように変更し、試行錯誤中です。
|