質問編集履歴

2

書式の改善

2021/10/06 01:08

投稿

goodyogurt
goodyogurt

スコア1

test CHANGED
@@ -1 +1 @@
1
- 画面遷移と同時にニフティクラウドから取得したデータを配列でtextviewに表示したいです。
1
+ 画面遷移と同時にニフティクラウドから取得したデータをランダムでtextviewに表示したいです。
test CHANGED
File without changes

1

書式の改善

2021/10/06 01:08

投稿

goodyogurt
goodyogurt

スコア1

test CHANGED
@@ -1 +1 @@
1
- ニフティクラウドから取得したデータtextviewに表示されな
1
+ 画面遷移と同時にニフティクラウドから取得したデータを配列でtextviewに表示したです。
test CHANGED
@@ -2,158 +2,356 @@
2
2
 
3
3
  XcodeとNCMBを用いています。
4
4
 
5
- 前の画面でNEXTボタンを押したら画面遷移すると同時に、ニフティクラウドのクラス(praise)に保存した文(word)がランダムでtextviewに表示されるようにしたいです。
6
-
7
-
8
-
9
- しかし、ボタンを押すと遷移はできるのですが、NCMBから取ってきデータがtextviewに表示されません
10
-
11
- 解決方法教えていただけると幸いです。
12
-
13
-
14
-
15
- ![![イメージ説明](cf8fefc2f3056ce9fde550c3b49f1d35.png)](e66506027c5e67dfe2df0b8f55e1ddca.png)
5
+
6
+
7
+ **実現したいこと**
8
+
9
+ 前の画面でNextボタンを押したら画面遷移と同時に、ニフティクラウドクラス(praise)に保存しField(word)の内容ランダムでtextviewに表示されるようにしたいです
10
+
11
+ ![イメージ説明](b3b50171dbe55f7a86341fab859669c9.png)
12
+
13
+
14
+
15
+
16
+
17
+ **発生している問題**
18
+
19
+ しかし、前画面でNextボタンを押すと画面遷移はできるのですが、実現したいことに書いた表示したい内容が次画面のtextviewに表示されません。
20
+
21
+
22
+
23
+ **ソースコード**
24
+
25
+ ```
26
+
27
+ import UIKit
28
+
29
+ import NCMB
30
+
31
+ import KRProgressHUD
32
+
33
+
34
+
35
+ class PoemViewController: UIViewController {
36
+
37
+ @IBOutlet var praiseTextView: UITextView!
38
+
39
+ var praiseArray = [NCMBObject]()
40
+
41
+ var praiseTag = ""
42
+
43
+ var relaxTag = ""
44
+
45
+ var selectedPraise: NCMBObject!
46
+
47
+
48
+
49
+ let ud = UserDefaults.standard
50
+
51
+
52
+
53
+ override func viewDidLoad() {
54
+
55
+ super.viewDidLoad()
56
+
57
+
58
+
59
+ loadData()
60
+
61
+ }
62
+
63
+
64
+
65
+
66
+
67
+ func loadData(){
68
+
69
+ KRProgressHUD.show()
70
+
71
+ let query = NCMBQuery(className: "praise")
72
+
73
+ query?.whereKey("Tag", equalTo: praiseTag)
74
+
75
+ query?.findObjectsInBackground({[self] (results, error) in
76
+
77
+ if error != nil{
78
+
79
+ print("error")
80
+
81
+
82
+
83
+ } else {
84
+
85
+ for i in results as! [NCMBObject]{
86
+
87
+ praiseArray .append(i)
88
+
89
+ }
90
+
91
+ KRProgressHUD.dismiss()
92
+
93
+ selectedPraise = praiseArray.randomElement()
94
+
95
+ praiseTextView.text = selectedPraise?.object(forKey: "word")as? String
96
+
97
+ if let word = selectedPraise?.object(forKey: "word") as? String {
98
+
99
+ praiseTextView.text = word
100
+
101
+
102
+
103
+ }
104
+
105
+ }
106
+
107
+ //データを渡す
108
+
109
+
110
+
111
+ })
112
+
113
+ }
114
+
115
+
116
+
117
+
118
+
119
+ @IBAction func nextButton(){
120
+
121
+ relaxTag = "bb"
122
+
123
+ ud.set(relaxTag, forKey: "Tag")
124
+
125
+ performSegue(withIdentifier: "showCell", sender: nil)
126
+
127
+ }
128
+
129
+
130
+
131
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
132
+
133
+ // 次の画面を取得(次の画面のオブジェクトを取得)
134
+
135
+ if segue.identifier == "showCell"{
136
+
137
+ // ④
138
+
139
+ let relaxViewController = segue.destination as! RelaxViewController
140
+
141
+ print(relaxTag)
142
+
143
+
144
+
145
+ relaxViewController.relaxTag = relaxTag
146
+
147
+
148
+
149
+ }
150
+
151
+ }
152
+
153
+ }
154
+
155
+
156
+
157
+ ```
158
+
159
+
160
+
161
+ **前画面のコード**
162
+
163
+
164
+
165
+ ```
166
+
167
+ import UIKit
168
+
169
+ import NCMB
170
+
171
+
172
+
173
+ class WordViewController: UIViewController {
174
+
175
+
176
+
177
+ @IBOutlet var memotextView: UITextView!
178
+
179
+ var praiseTag = ""
180
+
181
+ let ud = UserDefaults.standard
182
+
183
+
184
+
185
+ override func viewDidLoad() {
186
+
187
+ super.viewDidLoad()
188
+
189
+
190
+
191
+ // Do any additional setup after loading the view.
192
+
193
+ }
194
+
195
+ override func viewWillAppear(_ animated: Bool) {
196
+
197
+ memotextView.becomeFirstResponder()
198
+
199
+ }
200
+
201
+
202
+
203
+ @IBAction func nextButton(){
204
+
205
+ praiseTag = "aa"
206
+
207
+ ud.set(praiseTag, forKey: "Tag")
208
+
209
+ //画面遷移をする
210
+
211
+ performSegue(withIdentifier: "showWord", sender: nil)
212
+
213
+
214
+
215
+ // loaddata()
216
+
217
+ }
218
+
219
+ //saveButtonを押して,UserDefaultsで端末に保存
220
+
221
+ @IBAction func saveButton(){
222
+
223
+ let inputText = memotextView.text
224
+
225
+ let ud = UserDefaults.standard
226
+
227
+ if ud.array(forKey: "memoArray") != nil{
228
+
229
+ var saveMemoArray = ud.array(forKey: "memoArray") as![String]
230
+
231
+
232
+
233
+ if inputText != nil{
234
+
235
+ saveMemoArray.append(inputText!)
236
+
237
+ }else{
238
+
239
+ print("何も入力されていません")
240
+
241
+ }
242
+
243
+ ud.set(saveMemoArray, forKey: "memoArray")
244
+
245
+ }else{
246
+
247
+ var newMemoArray = [String]()
248
+
249
+
250
+
251
+ if inputText != nil{
252
+
253
+ newMemoArray.append(inputText!)
254
+
255
+ }else{
256
+
257
+
258
+
259
+ print("何も入力されていません")
260
+
261
+ }
262
+
263
+
264
+
265
+ ud.set(newMemoArray, forKey: "memoArray")
266
+
267
+ }
268
+
269
+ ud.synchronize()
270
+
271
+ self.dismiss(animated: true, completion: nil)
272
+
273
+
274
+
275
+ let alertController = UIAlertController(title: "保存完了!", message: "日記感覚で使ってね!", preferredStyle: .alert)
276
+
277
+ let action = UIAlertAction(title: "閉じる", style: .default) { (action) in
278
+
279
+ }
280
+
281
+ alertController.addAction(action)
282
+
283
+ self.present(alertController, animated: true, completion: nil)
284
+
285
+
286
+
287
+ }
288
+
289
+
290
+
291
+ }
292
+
293
+
294
+
295
+
296
+
297
+ ```
298
+
299
+ **自分が思う原因**
300
+
301
+
302
+
303
+ ```
304
+
305
+ if let word = selectedPraise?.object(forKey: "word") as? String {
306
+
307
+ praiseTextView.text = word
308
+
309
+ ```
310
+
311
+ ここでいうwordとはニフティクラウド上で作成したクラスのなかのfieldの名前なので=の後に入れていいのかわからないです。
312
+
313
+
314
+
315
+
316
+
317
+ ```
318
+
319
+ for i in results as! [NCMBObject]{
320
+
321
+ praiseArray .append(i)
322
+
323
+ ```
324
+
325
+ の部分でresultsが空っぽでpraiseArrayになにも追加されていなくてtextviewに表示するものがないのか
326
+
327
+
328
+
329
+ ```
330
+
331
+ selectedPraise?.object(forKey: "word")
332
+
333
+ ```
334
+
335
+ で、適切な値を得られていないのか
336
+
337
+
338
+
339
+ いずれの場合も対処法がわからず、困っています。ご教示の程よろしくお願いいたします。
340
+
341
+
342
+
343
+ **問題の発生した環境**
344
+
345
+ Xcode SWift
346
+
347
+
348
+
349
+ **前画面**
350
+
351
+ ![![イメージ説明](cf8fefc2f3056ce9fde550c3b49f1d35.png)
352
+
353
+
354
+
355
+ **問題が起こっている画面**
16
356
 
17
357
  ![イメージ説明](3c62773c29c06fa928c7f4dcf6582c82.png)
18
-
19
-
20
-
21
- !![イメージ説明](b3b50171dbe55f7a86341fab859669c9.png)明](92529a9b51afacea0355ef6390e167d7.png)
22
-
23
- ```ここに言語を入力
24
-
25
-
26
-
27
- import UIKit
28
-
29
- import NCMB
30
-
31
- import KRProgressHUD
32
-
33
-
34
-
35
- class PoemViewController: UIViewController {
36
-
37
- @IBOutlet var praiseTextView: UITextView!
38
-
39
- var praiseArray = [NCMBObject]()
40
-
41
- var praiseTag = ""
42
-
43
- var relaxTag = ""
44
-
45
- var selectedPraise: NCMBObject!
46
-
47
-
48
-
49
- let ud = UserDefaults.standard
50
-
51
-
52
-
53
- override func viewDidLoad() {
54
-
55
- super.viewDidLoad()
56
-
57
-
58
-
59
- loadData()
60
-
61
- }
62
-
63
-
64
-
65
-
66
-
67
- func loadData(){
68
-
69
- KRProgressHUD.show()
70
-
71
- let query = NCMBQuery(className: "praise")
72
-
73
- query?.whereKey("Tag", equalTo: praiseTag)
74
-
75
- query?.findObjectsInBackground({[self] (results, error) in
76
-
77
- if error != nil{
78
-
79
- print("error")
80
-
81
-
82
-
83
- } else {
84
-
85
- for i in results as! [NCMBObject]{
86
-
87
- praiseArray .append(i)
88
-
89
- }
90
-
91
- KRProgressHUD.dismiss()
92
-
93
- selectedPraise = praiseArray.randomElement()
94
-
95
- praiseTextView.text = selectedPraise?.object(forKey: "word")as? String
96
-
97
- if let word = selectedPraise?.object(forKey: "word") as? String {
98
-
99
- praiseTextView.text = word
100
-
101
-
102
-
103
- }
104
-
105
- }
106
-
107
- //データを渡す
108
-
109
-
110
-
111
- })
112
-
113
- }
114
-
115
-
116
-
117
-
118
-
119
- @IBAction func nextButton(){
120
-
121
- relaxTag = "bb"
122
-
123
- ud.set(relaxTag, forKey: "Tag")
124
-
125
- performSegue(withIdentifier: "showCell", sender: nil)
126
-
127
- }
128
-
129
-
130
-
131
- override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
132
-
133
- // 次の画面を取得(次の画面のオブジェクトを取得)
134
-
135
- if segue.identifier == "showCell"{
136
-
137
- // ④
138
-
139
- let relaxViewController = segue.destination as! RelaxViewController
140
-
141
- print(relaxTag)
142
-
143
-
144
-
145
- relaxViewController.relaxTag = relaxTag
146
-
147
-
148
-
149
- }
150
-
151
- }
152
-
153
- }
154
-
155
-
156
-
157
-
158
-
159
- ```