前提
Swiftで下記のようにbook_infoという辞書を宣言しており、タイトルや作者、画像を格納しております。
作者が複数いて配列にする必要があり、画像はUIImageであることから初期化は[String: Any]で宣言しております。
var book_info = [String: Any]()
APIで情報をとり出し、以下のようにこのbook_infoに入れています。
let url: URL = URL(string: "http://〜〜〜〜)")! let task: URLSessionTask = URLSession.shared.dataTask(with: url, completionHandler: { [self]data, response, error in do { let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String: Any] book_info["title"] = json["title"] book_info["writer"] = json["writer"] as? [String] book_info["main_genre"] = json["main_genre"] book_info["publisher"] = json["publisher"] book_info["description"] = json["description"] book_info["tag_list"] = json["tag_list"] as? [String] 〜〜〜以下略〜〜〜
これらbook_infoをそれぞれUILabelやUIImageViewに代入するときに文字列のbook_info["title"]やUIImageのbook_info["main_image"]は格納できていますが、配列の形になっているbook_info["writer"]やbook_info["tag_list"]が以下のエラーで抜き出せません。
この「Value of type 'Any?' has no subscripts」エラーを解消し、book_info["writer"]やbook_info["tag_list"]を配列として取得する方法を教えてください。
book_title.text = book_info["title"] as? String main_genre.text = book_info["main_genre"] as? String main_writer = book_info["writer"][0] as? String ///エラー Value of type 'Any?' has no subscripts** publisher.text = book_info["publisher"] as? String tag_list.text = book_info["tag_list"][0] as? String ///エラー Value of type 'Any?' has no subscripts book_description.text = book_info["description"] as? String roll_image.image = book_info["main_image"] as? UIImage
0 コメント