質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2421閲覧

urlから画像の取得

jiuiuoiui

総合スコア24

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/11/16 12:38

以下のようなコードを書いたところコンパイルは成功したのですが、以下のところでエラーがでてしまいます。

Swift

1import UIKit 2 3class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchBarDelegate,URLSessionDelegate { 4 5 var characters: [String] = [] 6 var explains: [String] = [] 7 8 @IBOutlet weak var myTable: UITableView! 9 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 setuptableview() 14 // Do any additional setup after loading the view, typically from a nib. 15 } 16 17 override func didReceiveMemoryWarning() { 18 super.didReceiveMemoryWarning() 19 // Dispose of any resources that can be recreated. 20 } 21 22 func setuptableview(){ 23 let url: NSURL = NSURL(string: "https://global.api.pvp.net/api/lol/static-data/jp/v1.2/champion?api_key=RGAPI-40046844-78a7-43b4-81af-caedf4a701d1")! 24 let configuration: URLSessionConfiguration = URLSessionConfiguration.default 25 let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil) 26 27 let task: URLSessionDataTask = session.dataTask(with: url as URL, completionHandler: {(data, response, err) -> Void in 28 if data != nil{ 29 let str = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 30 print(str!) 31 32 do{ 33 let json: NSDictionary = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary 34 let champions = json["data"] as! [String:[String:AnyObject]] //※Dictionary 35 36 for championdates in champions { 37 print("[\(championdates.0)]") //これはキー 38 self.characters.append(championdates.1["key"] as! String) //データ本体の"key" 39 self.explains.append(championdates.1["title"] as! String) //データ本体の"title" 40 print(championdates.1["title"] as! String) 41 } 42 }catch{ 43 print("error") 44 print(error) 45 } 46 self.myTable.reloadData() 47 } 48 }) 49 task.resume() 50 51 } 52 53 func tableView(_ table: UITableView, numberOfRowsInSection section: Int) -> Int { 54 return characters.count 55 } 56 57 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 58 print("test") 59 // tableCell の ID で UITableViewCell のインスタンスを生成 60 let cell = myTable.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) 61 62 // Tag番号 1 で UIImageView インスタンスの生成 63 let imageView = myTable.viewWithTag(1) as! UIImageView 64 let url = NSURL(string:"http://ddragon.leagueoflegends.com/cdn/6.22.1/img/champion/\(characters[indexPath.row]).png") 65 let req = NSURLRequest(url: url as! URL) 66 67 let conf = URLSessionConfiguration.default 68 let session = URLSession(configuration: conf, delegate: nil, delegateQueue: OperationQueue.main) 69 70 let task = session.dataTask(with: req as URLRequest, completionHandler: { 71 (data, response, error) -> Void in 72 do { 73 let image = UIImage(data:data!) 74 imageView.image = image 75 } catch { 76 print("error") 77 } 78 }) 79 80 task.resume() 81 82 83 84 // Tag番号 2 で UILabel インスタンスの生成 85 let label1 = myTable.viewWithTag(2) as! UILabel 86 label1.text = "\(characters[indexPath.row])" 87 // Tag番号 3 で UILabel インスタンスの生成 88 let label2 = myTable.viewWithTag(3) as! UILabel 89 label2.text = "\(explains[indexPath.row])" 90 91 return cell 92 93 } 94} 95
do { let image = UIImage(data:data!) imageView.image = image

この部分の、let image = UIImage(data:data!)のところでエラーがでてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/16 14:59

'print(str!)'の結果はどうですか?直前に’ let str = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)’ですから。
guest

回答2

0

info.plistのApp Transport Security SettingsにAllow Arbitrary Loadsを記述したら直りました!
https://から始まるので、この記述は必要ないと思ってました....fuzzball様ごめんなさい。

投稿2016/11/17 01:42

jiuiuoiui

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

その1

.pngのパスをhttps://(中略).pngにしてもダメでしょうか?

その2

swift

1let url = NSURL(string:"http://ddragon.leagueoflegends.com/cdn/6.22.1/img/champion/\(characters[indexPath.row]!).png")

でどうでしょうか?(!を追加)

投稿2016/11/16 13:24

編集2016/11/16 23:55
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2016/11/16 23:55

その2を追記しました。
jiuiuoiui

2016/11/17 01:33

cannot force unwrap value~~~~~~~ってエラーでてきてしまい、!を消すように促されます....
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問