回答編集履歴

4

編集

2020/04/13 15:19

投稿

退会済みユーザー
test CHANGED
@@ -5,3 +5,23 @@
5
5
  print(userDefaults.object(forKey: "UserName"))
6
6
 
7
7
  ```ってしてみたら`nil`って表示されない?
8
+
9
+
10
+
11
+ ---
12
+
13
+ viewDidLoad()の中で、初期値を設定する前に値を読み込んでいます。
14
+
15
+ 初期値を全て登録してから、値を読み込むようにコードの順番を変更してください。
16
+
17
+
18
+
19
+ readData()はいつも"NickName"をキーとして保存してる文字列を返すようになっています。各々のラベルに表示する文字列を返す用に変更してください。
20
+
21
+
22
+
23
+ userDefaultは保存処理をすると値が上書きされるので、func hozonButton()内部の`Key の値を削除`部分は不要です。
24
+
25
+
26
+
27
+ とりあえず直してみてください。

3

訂正

2020/04/13 15:19

投稿

退会済みユーザー
test CHANGED
@@ -1,67 +1,7 @@
1
1
  エラーの出る行の上で、
2
2
 
3
- print(userDefaults.object(forKey: "UserName"))ってしてみたらnilって表示されない?
3
+ ```swift
4
4
 
5
- func readData() -> String {
5
+ print(userDefaults.object(forKey: "UserName"))
6
6
 
7
- let str: String = userDefaults.object(forKey: "NickName") as! String
8
-
9
- let _: String = userDefaults.object(forKey: "UserName") as! String
10
-
11
- let _: String = userDefaults.object(forKey: "SendEmail") as! String
12
-
13
- let _: String = userDefaults.object(forKey: "SendPhone") as! String
14
-
15
- let _: String = userDefaults.object(forKey: "NextSendEmail") as! String
16
-
17
- let _: String = userDefaults.object(forKey: "NextSendPhone") as! String
18
-
19
- return str
20
-
21
- }
22
-
23
- の中身は3行目いかが意味不明だけど、処理の流れを追っていけば、なんでnilになるかもわかると思う。
24
-
25
- viewDidLaoadのなかで初期値を設定してる順番とreadDateしている順番を一つ一つみていってください。
26
-
27
- override func viewDidLoad() {
7
+ ```ってしてみたら`nil`って表示されない?
28
-
29
- super.viewDidLoad()
30
-
31
- nickNameTextField.delegate = self
32
-
33
- userNameTextField.delegate = self
34
-
35
- sendEmailTextField.delegate = self
36
-
37
- sendPhoneNumber.delegate = self
38
-
39
- nextSendEmailTextField.delegate = self
40
-
41
- nextSendPhoneNumber.delegate = self
42
-
43
- userDefaults.register(defaults: ["NickName": "ニックネームを入力"])
44
-
45
- nickNameLabel.text = readData()
46
-
47
- userDefaults.register(defaults: ["UserName": "名前を入力"])
48
-
49
- userNameLabel.text = readData()
50
-
51
- userDefaults.register(defaults: ["SendEmail": "Emailを入力"])
52
-
53
- sendEmailLabel.text = readData()
54
-
55
- userDefaults.register(defaults: ["SendPhone": "電話番号を入力"])
56
-
57
- sendPhoneLabel.text = readData()
58
-
59
- userDefaults.register(defaults: ["NextSendEmail": "Emailを入力"])
60
-
61
- nextSendEmailLabel.text = readData()
62
-
63
- userDefaults.register(defaults: ["NextSendPhone": "電話番号を入力"])
64
-
65
- nextSendPhoneLabel.text = readData()
66
-
67
- }

2

訂正

2020/04/13 14:55

投稿

退会済みユーザー
test CHANGED
@@ -1,56 +1,32 @@
1
1
  エラーの出る行の上で、
2
2
 
3
3
  print(userDefaults.object(forKey: "UserName"))ってしてみたらnilって表示されない?
4
-
5
-
6
4
 
7
5
  func readData() -> String {
8
6
 
9
7
  let str: String = userDefaults.object(forKey: "NickName") as! String
10
8
 
11
-
12
-
13
9
  let _: String = userDefaults.object(forKey: "UserName") as! String
14
-
15
-
16
10
 
17
11
  let _: String = userDefaults.object(forKey: "SendEmail") as! String
18
12
 
19
-
20
-
21
13
  let _: String = userDefaults.object(forKey: "SendPhone") as! String
22
-
23
-
24
14
 
25
15
  let _: String = userDefaults.object(forKey: "NextSendEmail") as! String
26
16
 
27
-
28
-
29
17
  let _: String = userDefaults.object(forKey: "NextSendPhone") as! String
30
-
31
-
32
18
 
33
19
  return str
34
20
 
35
-
36
-
37
21
  }
38
-
39
-
40
22
 
41
23
  の中身は3行目いかが意味不明だけど、処理の流れを追っていけば、なんでnilになるかもわかると思う。
42
24
 
43
-
44
-
45
25
  viewDidLaoadのなかで初期値を設定してる順番とreadDateしている順番を一つ一つみていってください。
46
-
47
-
48
26
 
49
27
  override func viewDidLoad() {
50
28
 
51
29
  super.viewDidLoad()
52
-
53
-
54
30
 
55
31
  nickNameTextField.delegate = self
56
32
 
@@ -64,42 +40,28 @@
64
40
 
65
41
  nextSendPhoneNumber.delegate = self
66
42
 
67
-
68
-
69
43
  userDefaults.register(defaults: ["NickName": "ニックネームを入力"])
70
44
 
71
45
  nickNameLabel.text = readData()
72
-
73
-
74
46
 
75
47
  userDefaults.register(defaults: ["UserName": "名前を入力"])
76
48
 
77
49
  userNameLabel.text = readData()
78
50
 
79
-
80
-
81
51
  userDefaults.register(defaults: ["SendEmail": "Emailを入力"])
82
52
 
83
53
  sendEmailLabel.text = readData()
84
-
85
-
86
54
 
87
55
  userDefaults.register(defaults: ["SendPhone": "電話番号を入力"])
88
56
 
89
57
  sendPhoneLabel.text = readData()
90
58
 
91
-
92
-
93
59
  userDefaults.register(defaults: ["NextSendEmail": "Emailを入力"])
94
60
 
95
61
  nextSendEmailLabel.text = readData()
96
-
97
-
98
62
 
99
63
  userDefaults.register(defaults: ["NextSendPhone": "電話番号を入力"])
100
64
 
101
65
  nextSendPhoneLabel.text = readData()
102
66
 
103
-
104
-
105
67
  }

1

訂正

2020/04/13 14:44

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,105 @@
1
1
  エラーの出る行の上で、
2
2
 
3
3
  print(userDefaults.object(forKey: "UserName"))ってしてみたらnilって表示されない?
4
+
5
+
6
+
7
+ func readData() -> String {
8
+
9
+ let str: String = userDefaults.object(forKey: "NickName") as! String
10
+
11
+
12
+
13
+ let _: String = userDefaults.object(forKey: "UserName") as! String
14
+
15
+
16
+
17
+ let _: String = userDefaults.object(forKey: "SendEmail") as! String
18
+
19
+
20
+
21
+ let _: String = userDefaults.object(forKey: "SendPhone") as! String
22
+
23
+
24
+
25
+ let _: String = userDefaults.object(forKey: "NextSendEmail") as! String
26
+
27
+
28
+
29
+ let _: String = userDefaults.object(forKey: "NextSendPhone") as! String
30
+
31
+
32
+
33
+ return str
34
+
35
+
36
+
37
+ }
38
+
39
+
40
+
41
+ の中身は3行目いかが意味不明だけど、処理の流れを追っていけば、なんでnilになるかもわかると思う。
42
+
43
+
44
+
45
+ viewDidLaoadのなかで初期値を設定してる順番とreadDateしている順番を一つ一つみていってください。
46
+
47
+
48
+
49
+ override func viewDidLoad() {
50
+
51
+ super.viewDidLoad()
52
+
53
+
54
+
55
+ nickNameTextField.delegate = self
56
+
57
+ userNameTextField.delegate = self
58
+
59
+ sendEmailTextField.delegate = self
60
+
61
+ sendPhoneNumber.delegate = self
62
+
63
+ nextSendEmailTextField.delegate = self
64
+
65
+ nextSendPhoneNumber.delegate = self
66
+
67
+
68
+
69
+ userDefaults.register(defaults: ["NickName": "ニックネームを入力"])
70
+
71
+ nickNameLabel.text = readData()
72
+
73
+
74
+
75
+ userDefaults.register(defaults: ["UserName": "名前を入力"])
76
+
77
+ userNameLabel.text = readData()
78
+
79
+
80
+
81
+ userDefaults.register(defaults: ["SendEmail": "Emailを入力"])
82
+
83
+ sendEmailLabel.text = readData()
84
+
85
+
86
+
87
+ userDefaults.register(defaults: ["SendPhone": "電話番号を入力"])
88
+
89
+ sendPhoneLabel.text = readData()
90
+
91
+
92
+
93
+ userDefaults.register(defaults: ["NextSendEmail": "Emailを入力"])
94
+
95
+ nextSendEmailLabel.text = readData()
96
+
97
+
98
+
99
+ userDefaults.register(defaults: ["NextSendPhone": "電話番号を入力"])
100
+
101
+ nextSendPhoneLabel.text = readData()
102
+
103
+
104
+
105
+ }