質問編集履歴

6

訂正

2020/01/26 15:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
 
106
106
 
107
- class SampleObject {
107
+ class SampleObject: Equatable {
108
108
 
109
109
  var name: String = ""
110
110
 

5

訂正

2020/01/26 15:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -116,6 +116,14 @@
116
116
 
117
117
  }
118
118
 
119
+
120
+
121
+ static func == (lhs: SampleObject, rhs: SampleObject) -> Bool {
122
+
123
+ return lhs.name == rhs.name
124
+
125
+ }
126
+
119
127
  }
120
128
 
121
129
 

4

訂正

2020/01/26 15:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -176,9 +176,13 @@
176
176
 
177
177
 
178
178
 
179
+ // 現状はselectObjectにnilを直接代入する方法で動かしていますが、
180
+
181
+ // ここで自動的にnilになりはしないものかと…。
182
+
183
+ // でもってdidsetを自動で呼び出すことはできるでしょうか?
179
184
 
180
185
 
181
- // ここで自動的にnilになりはしないものかと…。でもってdidsetを自動で呼び出すことは可能でしょうか?
182
186
 
183
187
  print(a.selectObject?.name as Any) // => Optional("B")
184
188
 

3

訂正

2020/01/26 14:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -128,11 +128,21 @@
128
128
 
129
129
 
130
130
 
131
- weak var selectObject: SampleObject?
131
+ weak var selectObject: SampleObject? {
132
+
133
+ didSet {
134
+
135
+ if oldValue != selectObject {
136
+
137
+ // arrayの要素の削除によってここが自動で呼び出せないでしょうか?
138
+
139
+ }
140
+
141
+ }
142
+
143
+ }
132
144
 
133
145
  }
134
-
135
-
136
146
 
137
147
 
138
148
 
@@ -168,7 +178,7 @@
168
178
 
169
179
 
170
180
 
171
- // ここで自動的にnilになりはしないものかと…。
181
+ // ここで自動的にnilになりはしないものかと…。でもってdidsetを自動で呼び出すことは可能でしょうか?
172
182
 
173
183
  print(a.selectObject?.name as Any) // => Optional("B")
174
184
 

2

追加になってしまう質問

2020/01/26 14:16

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -90,13 +90,87 @@
90
90
 
91
91
 
92
92
 
93
+ ```
94
+
95
+
96
+
97
+ すみません、上記を踏まえて↓ができませんでした。
98
+
99
+
100
+
101
+ ```swift
102
+
103
+ import UIKit
104
+
105
+
106
+
107
+ class SampleObject {
108
+
109
+ var name: String = ""
110
+
111
+
112
+
113
+ init(name: String) {
114
+
115
+ self.name = name
116
+
117
+ }
118
+
119
+ }
120
+
121
+
122
+
123
+ class A {
124
+
125
+
126
+
127
+ var array = [SampleObject]()
128
+
129
+
130
+
131
+ weak var selectObject: SampleObject?
132
+
133
+ }
93
134
 
94
135
 
95
136
 
96
137
 
97
138
 
139
+ let a = A()
98
140
 
99
141
 
142
+
143
+ a.array.append(SampleObject(name: "A"))
144
+
145
+ a.array.append(SampleObject(name: "B"))
146
+
147
+ a.array.append(SampleObject(name: "C"))
148
+
149
+
150
+
151
+ a.selectObject = a.array[1]
152
+
153
+
154
+
155
+ print(a.array.map { $0.name }) // => ["A", "B", "C"]
156
+
157
+ print(a.selectObject?.name as Any) // => Optional("B")
158
+
159
+
160
+
161
+ a.array.remove(at: 1)
162
+
163
+
164
+
165
+ print(a.array.map { $0.name }) // => ["A", "C"]
166
+
167
+
168
+
169
+
170
+
171
+ // ここで自動的にnilになりはしないものかと…。
172
+
173
+ print(a.selectObject?.name as Any) // => Optional("B")
100
174
 
101
175
 
102
176
 

1

訂正

2020/01/26 14:09

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,8 @@
58
58
 
59
59
  // ここで、nilになってほしいのですがそうはならないのでしょうか?
60
60
 
61
+ // また反映させる方法はあるのでしょうか?
62
+
61
63
  print(b.object?.name as Any) // => Optional("AAA")
62
64
 
63
65