SwiftのOptional Bindingでネストが深くなってしまう

投稿者: Anonymous

Optional String型のimageURLStringに画像のURLが格納されており、その画像をimageViewで表示したいと考えています。

以下のコードで動作はしますが、ネストが深くなりすぎてしまいます。
よりシンプルな書き方があれば、ご教示いただけると幸いです。

if let imageURLString = imageURLString {
    if let urlString = imageURLString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) {
        if let url = NSURL(string: urlString) {
            if let data = NSData(contentsOfURL: url, options: .DataReadingMappedIfSafe, error: nil) {
                if let image = UIImage(data: data) {
                    self.imageView.image = image
                }
            }
        }
    }
}

解決

@Harawo様の回答にあるように、Swift1.2からは複数のOptional Bindingを1行で書けるようになります。

if let imageURLString = imageURLString, urlString = imageURLString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding), url = NSURL(string: urlString), data = NSData(contentsOfURL: url, options: .DataReadingMappedIfSafe, error: nil), image = UIImage(data: data) {
    self.imageView.image = image
}

回答者様ありがとうございました。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *