最近Swiftを書き始めた者なので、易しく回答していただけると幸いです。
現在私は、Googleスプレットシートに載っている情報をJSONデータとして取得し、その取得したデータを画面表示させるiOSアプリを作っています。
Qiita等のサイトをあさりながら一通り作ったのですが、画面表示がされずに行き詰まっています。
以下iOSのSwiftのソースコードです。
###Swiftのソースコード
import UIKit import Foundation class ViewController: UIViewController { @IBOutlet weak var JsonLabel1: UILabel! @IBOutlet weak var JsonLabel2: UILabel! @IBOutlet weak var JsonLabel3: UILabel! @IBOutlet weak var JsonLabel4: UILabel! override func viewDidLoad() { super.viewDidLoad() struct JsonData : Codable{ var Name : String var Age : Int var Height : Int var Weight : Int } let UrlString = "ここにJSONデータを出力するURLを入力" guard let url = URL(string: UrlString) else{ return } URLSession.shared.dataTask(with: url) { (data, response, error) in if error != nil { print(error!.localizedDescription) } guard let data = data else { return } let decoder = JSONDecoder() let JsonCode = try? decoder.decode(JsonData.self, from: data) self.JsonLabel1.text = JsonCode?.Name self.JsonLabel2.text = JsonCode?.Age self.JsonLabel3.text = JsonCode?.Height self.JsonLabel4.text = JsonCode?.Weight }.resume() } }
GAS側については正常にURLが生成され、JSONデータを吐き出してくれているのですが、iOS側でプログラムを実際に実行してみると思うように動きません。
###エラーメッセージ
Cannot assign value of type 'Int?' to type 'String?'
該当のソースコード
self.JsonLabel2.text = JsonCode?.Age self.JsonLabel3.text = JsonCode?.Height self.JsonLabel4.text = JsonCode?.Weight
###訂正後
self.JsonLabel1.text = JsonCode?.Name //self.JsonLabel2.text = JsonCode?.Age //self.JsonLabel3.text = JsonCode?.Height //self.JsonLabel4.text = JsonCode?.Weight
試したこと
エラーについて試したことですが、最初の「Cannot assign value of type 'Int?' to type 'String?'」については代入する型が違うということで、何が悪いかはわかっていますが、具体的な解決策が思いつきません。UILabelではなく、他のものを使えば改善されるのでしょうか?
そして次の問題が一番わかっていないのですが、上記のエラーの部分を一旦コメントアウトして実行したところ、エラーはなく、正常にコンパイルはできました。
しかし、実際にシュミレータや実機に実装してアプリを立ち上げてみると、「JsonLabel1」のところが消えるだけで、取得したはずのデータが表示されません(JsonLabel2〜4については何も変更を加えていないので、「JsonLabel2」などと表示されたままです)。
ここに問題に対して試したことを記載してください。
補足情報
View Controllerの画面を貼っておきます。
このような感じになっています。
初心者なので、至らぬ点が多々あると思いますが、ご教示いただけますと幸いです。
よろしくお願いします。