回答編集履歴
1
add using reflect
test
CHANGED
@@ -265,3 +265,51 @@
|
|
265
265
|
self.CHANGEOFWAIT = values[66]
|
266
266
|
|
267
267
|
```
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
---
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
追記:fuzzballさんがリフレクションの使い方を教えてくれました!ありがとうございます!
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
```swift
|
280
|
+
|
281
|
+
struct Food { var Group, FoodNumber, (中略) : String? } //一時的にオプショナル型にする
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
Mirror(reflecting: Food()).children.compactMap { $0.label }.enumerated().forEach {
|
286
|
+
|
287
|
+
print("self.($0.element) = values[($0.offset)]")
|
288
|
+
|
289
|
+
}
|
290
|
+
|
291
|
+
```
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
`struct Food`の中の`var`の型が元は`String`ですが、`Food()`を使えるようになるため、`String?`みたいに`?`で後飾ってオプショナル型にします。
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
`compactMap`と`forEach`が実にいいことで覚えるのをおすすめですが、for loopで書いたらこうなります:
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
```swift
|
304
|
+
|
305
|
+
for (offset, (label, _)) Mirror(reflecting: Food()).children.enumerated() {
|
306
|
+
|
307
|
+
print("self.(label) = values[(offset)]")
|
308
|
+
|
309
|
+
}
|
310
|
+
|
311
|
+
```
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
出力は上記と同じになります。
|