edo1z blog

プログラミングなどに関するブログです

Xcode Swift - URLから画像を表示する

Xcode 7.0.1 Swift 2.0

参考:UIImage

下記のようにやってみましたが、NSDataに関するエラーがでました。

let url = NSURL(string: img_url); //img_urlにhttp://hoge.com/img.jpg等のStringが入っている
var err: NSError?;
var imageData = NSData(contentsOfURL:url!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!;
var img = UIImage(data:imageData);

let imgView = UIImageView(image:img);
imgView.frame = CGRectMake(0, 0, 100, 50);
self.view.addSubview(imgView);

エラー内容

Cannot invoke initializer for type 'NSData' with an argument list of type '(contentsOfURL: NSURL, options: NSDataReadingOptions, error: inout NSError?)'

参考:[swift] CustomCellを利用したユーザ一覧画

Swift 2.0より、JavaではおなじみのTry-Catch構文が導入され、例外処理(エラー発生時処理)が処理されることになりました。それにともない、NSErrorを使うメソッド等の書式が変更を受けているようです。

参考:Swift 2.0 の try, catch ファーストインプレッション

let url = NSURL(string: img_url);
let imgData: NSData

do {
    imgData = try NSData(contentsOfURL:url!,options: NSDataReadingOptions.DataReadingMappedIfSafe)
    let img = UIImage(data:imgData);
    let imgView = UIImageView(image:img);
    imgView.frame = CGRectMake(0, 0, 100, 50);
    self.view.addSubview(imgView);
} catch {
    print("Error: can't create image.")
}

これでできた。