質問編集履歴

3

復元しました

2017/01/13 05:30

投稿

bruteberry
bruteberry

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
+ ###前提・実現したいこと
2
+
1
3
  iOSでAPIを利用したい。
2
4
 
3
5
  前にも似たような質問をしているのでお恥ずかしい限りですが、いまいち通信をする部分の作り方がよく分かっていません。
@@ -28,11 +30,13 @@
28
30
 
29
31
 
30
32
 
33
+
34
+
35
+
36
+
31
- 該当のソースコード
37
+ ###該当のソースコード
38
+
32
-
39
+ ```ここに言語を入力
33
-
34
-
35
-
36
40
 
37
41
  import UIKit
38
42
 
@@ -288,290 +292,4 @@
288
292
 
289
293
  }
290
294
 
291
- ###前提・実現したいこと
292
-
293
- iOSでAPIを利用したい。
294
-
295
- 前にも似たような質問をしているのでお恥ずかしい限りですが、いまいち通信をする部分の作り方がよく分かっていません。
296
-
297
- 事情があってAPIのURLは晒せないのですが、下の方のprint(jsonData)はきちんと実行され、
298
-
299
-
300
-
301
- [{"prefix_1":"bene","prefix_1_mean":"善い","prefix_1_image":"http://www.****.png","prefix_2":"","prefix_2_mean":null,"prefix_2_image":"","radix_1":"dict","radix_1_mean":"言う","radix_1_image":"http://www.*.png","radix_2":"","radix_2_mean":null,"radix_2_image":"0","suffix_1":"tion","suffix_1_mean":"名詞化","suffix_1_image":"http://www.*.png","suffix_2":"","suffix_2_mean":null,"suffix_2_image":"","meaning":"祝福、祝祷、感謝の祈り","story_1":null,"story_2":null,"story_3":null,"story_4":null,"story_5":null,"example":"","ja_example":""}]
302
-
303
-
304
-
305
- という結果が返ってきています。
306
-
307
-
308
-
309
- 同じ名前のString変数prefix_1にbeneを格納し、prefix_1_meanに善いを格納し...という感じにしたいのですが、うまくできません。
310
-
311
-
312
-
313
- print(jsonData)は実行されているのにprint("ここからprefix1の中身")が実行されてないっぽいのもよく分かりません。
314
-
315
-
316
-
317
- デバッグできない状態での質問で申し訳ないですが、アドバイスを頂けるとうれしいです。
318
-
319
- よろしくお願いします。
320
-
321
-
322
-
323
- ###該当のソースコード
324
-
325
- import UIKit
326
-
327
-
328
-
329
- class DetailViewController: UIViewController {
330
-
331
-
332
-
333
-
334
-
335
- @IBOutlet weak var detailWordLabel: UILabel!
336
-
337
- @IBOutlet weak var detailWordImage: UIImageView!
338
-
339
-
340
-
341
- //単語と関連画像
342
-
343
- var word: String = String()
344
-
345
- var wordImage: String = String()
346
-
347
-
348
-
349
- //接辞・語根
350
-
351
- var prefix1: String = String()
352
-
353
-
354
-
355
-
356
-
357
- //単語の意味
358
-
359
- var mean: String = String()
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
- override func viewDidLoad() {
368
-
369
- super.viewDidLoad()
370
-
371
- //ラベルに単語名を設定
372
-
373
- detailWordLabel.text = word
374
-
375
-
376
-
377
- //UIImageViewにユーザが選択した関連画像を設定
378
-
379
- if let url = URL(string:wordImage) {
380
-
381
- let req = URLRequest(url: url)
382
-
383
- let task = URLSession.shared.dataTask(with: req, completionHandler: {data, response, error in
384
-
385
- if let data = data {
386
-
387
- if let anImage = UIImage(data: data) {
388
-
389
- DispatchQueue.main.async {
390
-
391
- self.detailWordImage.image = anImage
392
-
393
- }
394
-
395
- }
396
-
397
- }
398
-
399
- })
400
-
401
- task.resume()
402
-
403
- }
404
-
405
-
406
-
407
- //とりあえずWORDはBenedictionということにする
408
-
409
- word = "benediction"
410
-
411
-
412
-
413
- //APIに接続
414
-
415
- ////接続先URLの作成
416
-
417
- let parameter = "WORD=\(word)"
418
-
419
- let url = "***********"
420
-
421
- let requestUrl = "\(url)?\(parameter)"
422
-
423
-
424
-
425
- //APIをリクエストする
426
-
427
- request(requestUrl: requestUrl)
428
-
429
- // Do any additional setup after loading the view.
430
-
431
- }
432
-
433
-
434
-
435
-
436
-
437
- override func didReceiveMemoryWarning() {
438
-
439
- super.didReceiveMemoryWarning()
440
-
441
- // Dispose of any resources that can be recreated.
442
-
443
- }
444
-
445
-
446
-
447
-
448
-
449
- // リクエストを行なう
450
-
451
- func request(requestUrl: String) {
452
-
453
- // URL生成
454
-
455
- guard let url = URL(string: requestUrl) else {
456
-
457
- // URL生成失敗
458
-
459
- return
460
-
461
- }
462
-
463
-
464
-
465
- // リクエスト生成
466
-
467
- let request = URLRequest(url: url)
468
-
469
-
470
-
471
- // APIをコールして商品検索を行なう
472
-
473
- let session = URLSession.shared
474
-
475
- let task = session.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in
476
-
477
- // 通信完了後の処理
478
-
479
- print(NSString(data: data!, encoding: String.Encoding.utf8.rawValue) ?? "")
480
-
481
-
482
-
483
- // エラーチェック
484
-
485
- guard error == nil else {
486
-
487
- // エラー表示
488
-
489
- let alert = UIAlertController(title: "エラー", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
490
-
491
-
492
-
493
- // UIに関する処理はメインスレッド上で行なう
494
-
495
- DispatchQueue.main.async {
496
-
497
- self.present(alert, animated: true, completion: nil)
498
-
499
- }
500
-
501
- return
502
-
503
- }
504
-
505
-
506
-
507
- // JSONで返却されたデータをパースして格納する
508
-
509
- guard let data = data else {
510
-
511
- // データなし
512
-
513
- return
514
-
515
- }
516
-
517
-
518
-
519
- // JSON形式への変換処理
520
-
521
- guard let jsonData = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: Any] else {
522
-
523
- // 変換失敗
524
-
525
- return
526
-
527
- }
528
-
529
-
530
-
531
- print(jsonData)
532
-
533
- //JSONデータをパースする
534
-
535
-
536
-
537
- let prefix1 = jsonData["prefix_1"] as? String
538
-
539
-
540
-
541
- print("ここからprefix1の中身")
542
-
543
- print(prefix1)
544
-
545
-
546
-
547
- }
548
-
549
- // 通信開始
550
-
551
- task.resume()
552
-
553
- }
554
-
555
-
556
-
557
- /*
558
-
559
- // MARK: - Navigation
560
-
561
-
562
-
563
- // In a storyboard-based application, you will often want to do a little preparation before navigation
564
-
565
- override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
566
-
567
- // Get the new view controller using segue.destinationViewController.
568
-
569
- // Pass the selected object to the new view controller.
570
-
571
- }
572
-
573
- */
574
-
575
-
576
-
577
- }
295
+ ```

2

復元しました

2017/01/13 05:30

投稿

bruteberry
bruteberry

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1 +1,577 @@
1
- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
+ iOSでAPIを利用したい。
2
+
3
+ 前にも似たような質問をしているのでお恥ずかしい限りですが、いまいち通信をする部分の作り方がよく分かっていません。
4
+
5
+ 事情があってAPIのURLは晒せないのですが、下の方のprint(jsonData)はきちんと実行され、
6
+
7
+
8
+
9
+ [{"prefix_1":"bene","prefix_1_mean":"善い","prefix_1_image":"http://www.****.png","prefix_2":"","prefix_2_mean":null,"prefix_2_image":"","radix_1":"dict","radix_1_mean":"言う","radix_1_image":"http://www.*.png","radix_2":"","radix_2_mean":null,"radix_2_image":"0","suffix_1":"tion","suffix_1_mean":"名詞化","suffix_1_image":"http://www.*.png","suffix_2":"","suffix_2_mean":null,"suffix_2_image":"","meaning":"祝福、祝祷、感謝の祈り","story_1":null,"story_2":null,"story_3":null,"story_4":null,"story_5":null,"example":"","ja_example":""}]
10
+
11
+
12
+
13
+ という結果が返ってきています。
14
+
15
+
16
+
17
+ 同じ名前のString変数prefix_1にbeneを格納し、prefix_1_meanに善いを格納し...という感じにしたいのですが、うまくできません。
18
+
19
+
20
+
21
+ print(jsonData)は実行されているのにprint("ここからprefix1の中身")が実行されてないっぽいのもよく分かりません。
22
+
23
+
24
+
25
+ デバッグできない状態での質問で申し訳ないですが、アドバイスを頂けるとうれしいです。
26
+
27
+ よろしくお願いします。
28
+
29
+
30
+
31
+ 該当のソースコード
32
+
33
+
34
+
35
+
36
+
37
+ import UIKit
38
+
39
+
40
+
41
+ class DetailViewController: UIViewController {
42
+
43
+
44
+
45
+
46
+
47
+ @IBOutlet weak var detailWordLabel: UILabel!
48
+
49
+ @IBOutlet weak var detailWordImage: UIImageView!
50
+
51
+
52
+
53
+ //単語と関連画像
54
+
55
+ var word: String = String()
56
+
57
+ var wordImage: String = String()
58
+
59
+
60
+
61
+ //接辞・語根
62
+
63
+ var prefix1: String = String()
64
+
65
+
66
+
67
+
68
+
69
+ //単語の意味
70
+
71
+ var mean: String = String()
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ override func viewDidLoad() {
80
+
81
+ super.viewDidLoad()
82
+
83
+ //ラベルに単語名を設定
84
+
85
+ detailWordLabel.text = word
86
+
87
+
88
+
89
+ //UIImageViewにユーザが選択した関連画像を設定
90
+
91
+ if let url = URL(string:wordImage) {
92
+
93
+ let req = URLRequest(url: url)
94
+
95
+ let task = URLSession.shared.dataTask(with: req, completionHandler: {data, response, error in
96
+
97
+ if let data = data {
98
+
99
+ if let anImage = UIImage(data: data) {
100
+
101
+ DispatchQueue.main.async {
102
+
103
+ self.detailWordImage.image = anImage
104
+
105
+ }
106
+
107
+ }
108
+
109
+ }
110
+
111
+ })
112
+
113
+ task.resume()
114
+
115
+ }
116
+
117
+
118
+
119
+ //とりあえずWORDはBenedictionということにする
120
+
121
+ word = "benediction"
122
+
123
+
124
+
125
+ //APIに接続
126
+
127
+ ////接続先URLの作成
128
+
129
+ let parameter = "WORD=\(word)"
130
+
131
+ let url = "***********"
132
+
133
+ let requestUrl = "\(url)?\(parameter)"
134
+
135
+
136
+
137
+ //APIをリクエストする
138
+
139
+ request(requestUrl: requestUrl)
140
+
141
+ // Do any additional setup after loading the view.
142
+
143
+ }
144
+
145
+
146
+
147
+
148
+
149
+ override func didReceiveMemoryWarning() {
150
+
151
+ super.didReceiveMemoryWarning()
152
+
153
+ // Dispose of any resources that can be recreated.
154
+
155
+ }
156
+
157
+
158
+
159
+
160
+
161
+ // リクエストを行なう
162
+
163
+ func request(requestUrl: String) {
164
+
165
+ // URL生成
166
+
167
+ guard let url = URL(string: requestUrl) else {
168
+
169
+ // URL生成失敗
170
+
171
+ return
172
+
173
+ }
174
+
175
+
176
+
177
+ // リクエスト生成
178
+
179
+ let request = URLRequest(url: url)
180
+
181
+
182
+
183
+ // APIをコールして商品検索を行なう
184
+
185
+ let session = URLSession.shared
186
+
187
+ let task = session.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in
188
+
189
+ // 通信完了後の処理
190
+
191
+ print(NSString(data: data!, encoding: String.Encoding.utf8.rawValue) ?? "")
192
+
193
+
194
+
195
+ // エラーチェック
196
+
197
+ guard error == nil else {
198
+
199
+ // エラー表示
200
+
201
+ let alert = UIAlertController(title: "エラー", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
202
+
203
+
204
+
205
+ // UIに関する処理はメインスレッド上で行なう
206
+
207
+ DispatchQueue.main.async {
208
+
209
+ self.present(alert, animated: true, completion: nil)
210
+
211
+ }
212
+
213
+ return
214
+
215
+ }
216
+
217
+
218
+
219
+ // JSONで返却されたデータをパースして格納する
220
+
221
+ guard let data = data else {
222
+
223
+ // データなし
224
+
225
+ return
226
+
227
+ }
228
+
229
+
230
+
231
+ // JSON形式への変換処理
232
+
233
+ guard let jsonData = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: Any] else {
234
+
235
+ // 変換失敗
236
+
237
+ return
238
+
239
+ }
240
+
241
+
242
+
243
+ print(jsonData)
244
+
245
+ //JSONデータをパースする
246
+
247
+
248
+
249
+ let prefix1 = jsonData["prefix_1"] as? String
250
+
251
+
252
+
253
+ print("ここからprefix1の中身")
254
+
255
+ print(prefix1)
256
+
257
+
258
+
259
+ }
260
+
261
+ // 通信開始
262
+
263
+ task.resume()
264
+
265
+ }
266
+
267
+
268
+
269
+ /*
270
+
271
+ // MARK: - Navigation
272
+
273
+
274
+
275
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
276
+
277
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
278
+
279
+ // Get the new view controller using segue.destinationViewController.
280
+
281
+ // Pass the selected object to the new view controller.
282
+
283
+ }
284
+
285
+ */
286
+
287
+
288
+
289
+ }
290
+
291
+ ###前提・実現したいこと
292
+
293
+ iOSでAPIを利用したい。
294
+
295
+ 前にも似たような質問をしているのでお恥ずかしい限りですが、いまいち通信をする部分の作り方がよく分かっていません。
296
+
297
+ 事情があってAPIのURLは晒せないのですが、下の方のprint(jsonData)はきちんと実行され、
298
+
299
+
300
+
301
+ [{"prefix_1":"bene","prefix_1_mean":"善い","prefix_1_image":"http://www.****.png","prefix_2":"","prefix_2_mean":null,"prefix_2_image":"","radix_1":"dict","radix_1_mean":"言う","radix_1_image":"http://www.*.png","radix_2":"","radix_2_mean":null,"radix_2_image":"0","suffix_1":"tion","suffix_1_mean":"名詞化","suffix_1_image":"http://www.*.png","suffix_2":"","suffix_2_mean":null,"suffix_2_image":"","meaning":"祝福、祝祷、感謝の祈り","story_1":null,"story_2":null,"story_3":null,"story_4":null,"story_5":null,"example":"","ja_example":""}]
302
+
303
+
304
+
305
+ という結果が返ってきています。
306
+
307
+
308
+
309
+ 同じ名前のString変数prefix_1にbeneを格納し、prefix_1_meanに善いを格納し...という感じにしたいのですが、うまくできません。
310
+
311
+
312
+
313
+ print(jsonData)は実行されているのにprint("ここからprefix1の中身")が実行されてないっぽいのもよく分かりません。
314
+
315
+
316
+
317
+ デバッグできない状態での質問で申し訳ないですが、アドバイスを頂けるとうれしいです。
318
+
319
+ よろしくお願いします。
320
+
321
+
322
+
323
+ ###該当のソースコード
324
+
325
+ import UIKit
326
+
327
+
328
+
329
+ class DetailViewController: UIViewController {
330
+
331
+
332
+
333
+
334
+
335
+ @IBOutlet weak var detailWordLabel: UILabel!
336
+
337
+ @IBOutlet weak var detailWordImage: UIImageView!
338
+
339
+
340
+
341
+ //単語と関連画像
342
+
343
+ var word: String = String()
344
+
345
+ var wordImage: String = String()
346
+
347
+
348
+
349
+ //接辞・語根
350
+
351
+ var prefix1: String = String()
352
+
353
+
354
+
355
+
356
+
357
+ //単語の意味
358
+
359
+ var mean: String = String()
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+ override func viewDidLoad() {
368
+
369
+ super.viewDidLoad()
370
+
371
+ //ラベルに単語名を設定
372
+
373
+ detailWordLabel.text = word
374
+
375
+
376
+
377
+ //UIImageViewにユーザが選択した関連画像を設定
378
+
379
+ if let url = URL(string:wordImage) {
380
+
381
+ let req = URLRequest(url: url)
382
+
383
+ let task = URLSession.shared.dataTask(with: req, completionHandler: {data, response, error in
384
+
385
+ if let data = data {
386
+
387
+ if let anImage = UIImage(data: data) {
388
+
389
+ DispatchQueue.main.async {
390
+
391
+ self.detailWordImage.image = anImage
392
+
393
+ }
394
+
395
+ }
396
+
397
+ }
398
+
399
+ })
400
+
401
+ task.resume()
402
+
403
+ }
404
+
405
+
406
+
407
+ //とりあえずWORDはBenedictionということにする
408
+
409
+ word = "benediction"
410
+
411
+
412
+
413
+ //APIに接続
414
+
415
+ ////接続先URLの作成
416
+
417
+ let parameter = "WORD=\(word)"
418
+
419
+ let url = "***********"
420
+
421
+ let requestUrl = "\(url)?\(parameter)"
422
+
423
+
424
+
425
+ //APIをリクエストする
426
+
427
+ request(requestUrl: requestUrl)
428
+
429
+ // Do any additional setup after loading the view.
430
+
431
+ }
432
+
433
+
434
+
435
+
436
+
437
+ override func didReceiveMemoryWarning() {
438
+
439
+ super.didReceiveMemoryWarning()
440
+
441
+ // Dispose of any resources that can be recreated.
442
+
443
+ }
444
+
445
+
446
+
447
+
448
+
449
+ // リクエストを行なう
450
+
451
+ func request(requestUrl: String) {
452
+
453
+ // URL生成
454
+
455
+ guard let url = URL(string: requestUrl) else {
456
+
457
+ // URL生成失敗
458
+
459
+ return
460
+
461
+ }
462
+
463
+
464
+
465
+ // リクエスト生成
466
+
467
+ let request = URLRequest(url: url)
468
+
469
+
470
+
471
+ // APIをコールして商品検索を行なう
472
+
473
+ let session = URLSession.shared
474
+
475
+ let task = session.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in
476
+
477
+ // 通信完了後の処理
478
+
479
+ print(NSString(data: data!, encoding: String.Encoding.utf8.rawValue) ?? "")
480
+
481
+
482
+
483
+ // エラーチェック
484
+
485
+ guard error == nil else {
486
+
487
+ // エラー表示
488
+
489
+ let alert = UIAlertController(title: "エラー", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
490
+
491
+
492
+
493
+ // UIに関する処理はメインスレッド上で行なう
494
+
495
+ DispatchQueue.main.async {
496
+
497
+ self.present(alert, animated: true, completion: nil)
498
+
499
+ }
500
+
501
+ return
502
+
503
+ }
504
+
505
+
506
+
507
+ // JSONで返却されたデータをパースして格納する
508
+
509
+ guard let data = data else {
510
+
511
+ // データなし
512
+
513
+ return
514
+
515
+ }
516
+
517
+
518
+
519
+ // JSON形式への変換処理
520
+
521
+ guard let jsonData = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: Any] else {
522
+
523
+ // 変換失敗
524
+
525
+ return
526
+
527
+ }
528
+
529
+
530
+
531
+ print(jsonData)
532
+
533
+ //JSONデータをパースする
534
+
535
+
536
+
537
+ let prefix1 = jsonData["prefix_1"] as? String
538
+
539
+
540
+
541
+ print("ここからprefix1の中身")
542
+
543
+ print(prefix1)
544
+
545
+
546
+
547
+ }
548
+
549
+ // 通信開始
550
+
551
+ task.resume()
552
+
553
+ }
554
+
555
+
556
+
557
+ /*
558
+
559
+ // MARK: - Navigation
560
+
561
+
562
+
563
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
564
+
565
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
566
+
567
+ // Get the new view controller using segue.destinationViewController.
568
+
569
+ // Pass the selected object to the new view controller.
570
+
571
+ }
572
+
573
+ */
574
+
575
+
576
+
577
+ }

1

削除申請中

2017/01/13 05:28

投稿

bruteberry
bruteberry

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,297 +1 @@
1
- ###前提・実現したいこと
2
-
3
- iOSでAPIを利用したい。
4
-
5
- 前にも似たような質問をしているのでお恥ずかしい限りですが、いまいち通信をする部分の作り方がよく分かっていません。
6
-
7
- 事情があってAPIのURLは晒せないのですが、下の方のprint(jsonData)はきちんと実行され、
8
-
9
-
10
-
11
- [{"prefix_1":"bene","prefix_1_mean":"善い","prefix_1_image":"http://www.********.png","prefix_2":"","prefix_2_mean":null,"prefix_2_image":"","radix_1":"dict","radix_1_mean":"言う","radix_1_image":"http://www.*****.png","radix_2":"","radix_2_mean":null,"radix_2_image":"0","suffix_1":"tion","suffix_1_mean":"名詞化","suffix_1_image":"http://www.*****.png","suffix_2":"","suffix_2_mean":null,"suffix_2_image":"","meaning":"祝福、祝祷、感謝の祈り","story_1":null,"story_2":null,"story_3":null,"story_4":null,"story_5":null,"example":"","ja_example":""}]
12
-
13
-
14
-
15
- という結果が返ってきています。
16
-
17
-
18
-
19
- 同じ名前のString変数prefix_1にbeneを格納し、prefix_1_meanに善いを格納し...という感じにしたいのですが、うまくできません。
20
-
21
-
22
-
23
- print(jsonData)は実行されているのにprint("ここからprefix1の中身")が実行されてないっぽいのもよく分かりません。
24
-
25
-
26
-
27
- デバッグできない状態での質問で申し訳ないですが、アドバイスを頂けるとうれしいです。
28
-
29
- よろしくお願いします。
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
- ###該当のソースコード
38
-
39
- ```Swift
40
-
41
- import UIKit
42
-
43
-
44
-
45
- class DetailViewController: UIViewController {
46
-
47
-
48
-
49
-
50
-
51
- @IBOutlet weak var detailWordLabel: UILabel!
52
-
53
- @IBOutlet weak var detailWordImage: UIImageView!
54
-
55
-
56
-
57
- //単語と関連画像
58
-
59
- var word: String = String()
60
-
61
- var wordImage: String = String()
62
-
63
-
64
-
65
- //接辞・語根
66
-
67
- var prefix1: String = String()
68
-
69
-
70
-
71
-
72
-
73
- //単語の意味
74
-
75
- var mean: String = String()
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
- override func viewDidLoad() {
84
-
85
- super.viewDidLoad()
86
-
87
- //ラベルに単語名を設定
88
-
89
- detailWordLabel.text = word
90
-
91
-
92
-
93
- //UIImageViewにユーザが選択した関連画像を設定
94
-
95
- if let url = URL(string:wordImage) {
96
-
97
- let req = URLRequest(url: url)
98
-
99
- let task = URLSession.shared.dataTask(with: req, completionHandler: {data, response, error in
100
-
101
- if let data = data {
102
-
103
- if let anImage = UIImage(data: data) {
104
-
105
- DispatchQueue.main.async {
106
-
107
- self.detailWordImage.image = anImage
108
-
109
- }
110
-
111
- }
112
-
113
- }
114
-
115
- })
116
-
117
- task.resume()
118
-
119
- }
120
-
121
-
122
-
123
- //とりあえずWORDはBenedictionということにする
124
-
125
- word = "benediction"
126
-
127
-
128
-
129
- //APIに接続
130
-
131
- ////接続先URLの作成
132
-
133
- let parameter = "WORD=\(word)"
134
-
135
- let url = "***********"
136
-
137
- let requestUrl = "\(url)?\(parameter)"
138
-
139
-
140
-
141
- //APIをリクエストする
142
-
143
- request(requestUrl: requestUrl)
144
-
145
- // Do any additional setup after loading the view.
146
-
147
- }
148
-
149
-
150
-
151
-
152
-
153
- override func didReceiveMemoryWarning() {
154
-
155
- super.didReceiveMemoryWarning()
156
-
157
- // Dispose of any resources that can be recreated.
158
-
159
- }
160
-
161
-
162
-
163
-
164
-
165
- // リクエストを行なう
166
-
167
- func request(requestUrl: String) {
168
-
169
- // URL生成
170
-
171
- guard let url = URL(string: requestUrl) else {
172
-
173
- // URL生成失敗
174
-
175
- return
176
-
177
- }
178
-
179
-
180
-
181
- // リクエスト生成
182
-
183
- let request = URLRequest(url: url)
184
-
185
-
186
-
187
- // APIをコールして商品検索を行なう
188
-
189
- let session = URLSession.shared
190
-
191
- let task = session.dataTask(with: request) { (data:Data?, response:URLResponse?, error:Error?) in
192
-
193
- // 通信完了後の処理
194
-
195
- print(NSString(data: data!, encoding: String.Encoding.utf8.rawValue) ?? "")
196
-
197
-
198
-
199
- // エラーチェック
200
-
201
- guard error == nil else {
202
-
203
- // エラー表示
204
-
205
- let alert = UIAlertController(title: "エラー", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
206
-
207
-
208
-
209
- // UIに関する処理はメインスレッド上で行なう
210
-
211
- DispatchQueue.main.async {
212
-
213
- self.present(alert, animated: true, completion: nil)
214
-
215
- }
216
-
217
- return
218
-
219
- }
220
-
221
-
222
-
223
- // JSONで返却されたデータをパースして格納する
224
-
225
- guard let data = data else {
226
-
227
- // データなし
228
-
229
- return
230
-
231
- }
232
-
233
-
234
-
235
- // JSON形式への変換処理
236
-
237
- guard let jsonData = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: Any] else {
238
-
239
- // 変換失敗
240
-
241
- return
242
-
243
- }
244
-
245
-
246
-
247
- print(jsonData)
248
-
249
- //JSONデータをパースする
250
-
251
-
252
-
253
- let prefix1 = jsonData["prefix_1"] as? String
254
-
255
-
256
-
257
- print("ここからprefix1の中身")
258
-
259
- print(prefix1)
260
-
261
-
262
-
263
- }
264
-
265
- // 通信開始
266
-
267
- task.resume()
268
-
269
- }
270
-
271
-
272
-
273
- /*
274
-
275
- // MARK: - Navigation
276
-
277
-
278
-
279
- // In a storyboard-based application, you will often want to do a little preparation before navigation
280
-
281
- override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
282
-
283
- // Get the new view controller using segue.destinationViewController.
284
-
285
- // Pass the selected object to the new view controller.
286
-
287
- }
288
-
289
- */
290
-
291
-
292
-
293
- }
294
-
295
-
296
-
297
- ```
1
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX