Swift - NSURL error

10,493

The NSURL constructor you're calling has got this signature:

convenience init?(string URLString: String)

? means that the constructor may not return a value, hence it is considered as an optional.

Same goes for the NSData constructor:

init?(contentsOfURL url: NSURL)

A quick fix is:

let myProfilePictureURL = NSURL(string: "http://graph.facebook.com/bobdylan/picture")
let imageData = NSData(contentsOfURL: myProfilePictureURL!)
self.myImage.image = UIImage(data: imageData!)

The best solution is to check (unwrap) those optionals, even if you're sure that they contain a value!

You can find more infos on optionals here: link to official Apple documentation.

Share:
10,493
Dan Riaz
Author by

Dan Riaz

Updated on June 04, 2022

Comments

  • Dan Riaz
    Dan Riaz almost 2 years

    Getting an error when trying to use the NSURL class below, the code below is essentially trying to store an image I am pulling in from Facebook into an imageView. The error is as follows:

    value of optional type 'NSURL?' not unwrapped, did you mean to use '!' or '?' 
    

    Not sure why this is is happening, help!

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var myImage: UIImageView!
    
        override func viewDidLoad() {
    
            super.viewDidLoad()
    
            let myProfilePictureURL = NSURL(string: "http://graph.facebook.com/bobdylan/picture")
            let imageData = NSData(contentsOfURL: myProfilePictureURL)
            self.myImage.image = UIImage(data: imageData)
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }