質問編集履歴
1
詳細な質問文にしました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Swiftで
|
1
|
+
【Swift】APIデータで変換した値をラベルに表示したい
|
body
CHANGED
@@ -1,31 +1,100 @@
|
|
1
|
-
resultの値をTextFieldに表示させたいのですが、シミュレータで確認すると空の状態となってしまいます。
|
2
|
-
|
1
|
+
APIを使ってひらがなに変換するアプリを作成しています。
|
2
|
+
textFieldに入力した漢字が、hiraganaConvertButtonを押すことでひらがなに変換された値がtestLabelに表示されるようにしたいのですが、表示されません。
|
3
3
|
|
4
4
|
どのようにしたらよろしいでしょうか?
|
5
5
|
ご教授いただければ幸いです。
|
6
6
|
|
7
7
|
```Swift
|
8
|
+
|
8
9
|
import UIKit
|
9
10
|
|
10
|
-
class
|
11
|
+
class ViewController: UIViewController, UITextFieldDelegate {
|
12
|
+
|
13
|
+
@IBOutlet weak var testLabel: UILabel!
|
14
|
+
@IBOutlet weak var textField: UITextField!
|
11
15
|
|
16
|
+
// レスポンスデータの構造
|
17
|
+
struct PostData: Codable {
|
18
|
+
var app_id : String
|
12
|
-
|
19
|
+
var request_id : String
|
20
|
+
var sentence : String
|
21
|
+
var output_type : String
|
22
|
+
}
|
13
23
|
|
24
|
+
struct Rubi: Codable {
|
14
|
-
|
25
|
+
var request_id : String
|
26
|
+
var output_type : String
|
27
|
+
var converted : String
|
28
|
+
}
|
15
29
|
|
30
|
+
var sentence: String = ""
|
31
|
+
|
32
|
+
|
16
33
|
override func viewDidLoad() {
|
17
34
|
super.viewDidLoad()
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
textField.delegate = self
|
39
|
+
|
40
|
+
}
|
41
|
+
|
42
|
+
@IBAction func hiraganaConvertButton(_ sender: Any) {
|
18
43
|
|
19
|
-
view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)
|
20
|
-
convertText.text = result
|
21
|
-
|
44
|
+
print(sentence)
|
45
|
+
sentenceChange()
|
46
|
+
testLabel.text = sentence
|
47
|
+
|
22
48
|
}
|
49
|
+
// ModalViewに値を渡す
|
50
|
+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
51
|
+
|
52
|
+
let modalVC = segue.destination as! ModalViewController
|
53
|
+
modalVC.result = sentence
|
54
|
+
}
|
23
55
|
|
56
|
+
// ひらがなに変換
|
24
|
-
|
57
|
+
func sentenceChange() {
|
58
|
+
if textField.text != nil {
|
59
|
+
var request = URLRequest(url: URL(string: "https://labs.goo.ne.jp/api/hiragana")!)
|
60
|
+
request.httpMethod = "POST"
|
61
|
+
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
|
62
|
+
|
63
|
+
let postData = PostData(app_id: "APIキー",request_id: "record003", sentence: textField.text!, output_type: "hiragana")
|
64
|
+
|
65
|
+
guard let uploadData = try? JSONEncoder().encode(postData) else {
|
66
|
+
print("失敗しました")
|
67
|
+
return
|
68
|
+
}
|
69
|
+
let task = URLSession.shared.uploadTask(with: request, from: uploadData) { data, response, error in
|
70
|
+
if let error = error {
|
71
|
+
print("error:(error)")
|
72
|
+
return
|
73
|
+
}
|
74
|
+
|
75
|
+
guard let data = data, let jsonData = try? JSONDecoder().decode(Rubi.self, from: data) else {
|
76
|
+
print("json変換に失敗しました")
|
77
|
+
return
|
78
|
+
}
|
79
|
+
print(jsonData.converted)
|
80
|
+
}
|
81
|
+
task.resume()
|
82
|
+
}else{
|
83
|
+
print("文章を入力してね")
|
84
|
+
}
|
25
85
|
|
26
|
-
dismiss(animated: true, completion: nil)
|
27
|
-
|
28
86
|
}
|
87
|
+
|
88
|
+
// キーボードを閉じる
|
89
|
+
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
90
|
+
textField.resignFirstResponder()
|
91
|
+
return true
|
92
|
+
}
|
93
|
+
|
29
94
|
}
|
30
95
|
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
31
100
|
```
|