回答編集履歴

1

削除

2018/05/17 23:44

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -1,147 +1 @@
1
- 解決したのでしたら良かったです、回答を書いていたので一応載せておきます。
2
-
3
- `UserDefaults`は配列を格納できますので、文字列を保存するより、文字列の配列を保存したほうが扱いやすいです。
4
-
5
-
6
-
7
- 自分なりに書き直して見ましたので参考にしてください。
8
-
9
-
10
-
11
-
12
-
13
- ```swift
14
-
15
- import UIKit
16
-
17
-
18
-
19
- class ListViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
20
-
21
-
22
-
23
- @IBOutlet weak var mainSpinner: UIPickerView! {
24
-
25
- didSet {
26
-
27
- mainSpinner.delegate = self
28
-
29
- mainSpinner.dataSource = self
30
-
31
- }
32
-
33
- }
34
-
35
- var workNames: [String] = []
36
-
37
-
38
-
39
- override func viewDidLoad() {
40
-
41
- super.viewDidLoad()
42
-
43
-
44
-
45
- // ダミーの初期値
46
-
47
- UserDefaults.standard.workNames = ["work1", "work2", "work3"]
48
-
49
- }
50
-
51
-
52
-
53
- override func viewWillAppear(_ animated: Bool) {
54
-
55
- super.viewWillAppear(animated)
56
-
57
-
58
-
59
- // 動作確認のために次の画面から戻った時にUserDefaults配列に一つ追加
60
-
61
- var workNames = UserDefaults.standard.workNames
62
-
63
- workNames.append("work")
64
-
65
- UserDefaults.standard.workNames = workNames
66
-
67
- }
68
-
69
-
70
-
71
- override func viewDidAppear(_ animated: Bool) {
72
-
73
- super.viewDidAppear(animated)
74
-
75
-
76
-
77
- // UserDefaultsから配列を取得してPickerをリロード
78
-
79
- workNames = UserDefaults.standard.workNames
80
-
81
- mainSpinner.reloadAllComponents()
82
-
83
- }
84
-
85
-
86
-
87
- func numberOfComponents(in pickerView: UIPickerView) -> Int {
88
-
89
- return 1
90
-
91
- }
92
-
93
-
94
-
95
- func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
96
-
97
- return workNames.count
98
-
99
- }
100
-
101
-
102
-
103
- func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
104
-
105
- return workNames[row]
106
-
107
- }
108
-
109
-
110
-
111
- func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
112
-
113
- print("row: (row)")
114
-
115
- print("value: (workNames[row])")
116
-
117
- }
118
-
119
- }
120
-
121
-
122
-
123
- // UserDefaultの拡張
124
-
125
- extension UserDefaults {
126
-
127
- var workNames: [String] {
128
-
129
- get {
130
-
131
- guard let workNames = UserDefaults.standard.object(forKey: "WorkNames") as? [String] else { return [] }
132
-
133
- return workNames
1
+ 回答するものを間違えました。
134
-
135
- }
136
-
137
- set { UserDefaults.standard.set(newValue, forKey: "WorkNames") }
138
-
139
- }
140
-
141
- }
142
-
143
-
144
-
145
-
146
-
147
- ```