The error is: "fatal error: unexpectedly found nil while unwrapping an Optional value"
I am doing the following in ViewController:
var imageURL:UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string:"http://cdn.businessoffashion.com/site/uploads/2014/09/Karl-Lagerfeld-Self-Portrait-Courtesy.jpg")
let data = NSData(contentsOfURL:url!)
if data!= nil {
imageURL.image = UIImage(data:data!)
}
}
I really don't understand why it will report an error on
imageURL.image = UIImage(data:data!)
while I already told it not to proceed if data is nil. It is not the problem of the link. Nor is there problem with the "data". I tried to print it and it was not nil.
Methode
}
Usage
This returns an optional value. Take a look at description of it. It says
An NSURL object initialized with URLString. If the URL string was malformed, returns nil.
In your code you are trying to
url!
which will get crash whenever the value of url is nil.The error is most likely that
imageURL
is nil. Are you assigning it a value elsewhere in the code, or is it actually@IBOutlet
in the real code? If you do not assign a value to it, it will be nil - but its type ofUIImageView!
means it is an "implicitly unwrapped optional" which means the compiler won't stop you using it even if it is nil, but will crash at runtime with the error you're getting.The rest of the code is correct (assuming the missing space before
!=
is a typo not in your compiling code), but you would be better off usingif let
to unwrap your optionals rather than checking them againstnil
and then using the force-unwrap operator:If you happen to be using the Swift 1.2 beta, you can combine the two ifs together:
Or, if you prefer, use
flatMap
:You can set image in image view by using UIImageView+AFNetworking
Frist you drag the UIImageView+AFNetworking objective c classes in your project and import UIImageView+AFNetworking.h class in your project's bridge header file. And use this line to set image with placeholder in imageview. by this you can set multiple image in a view without any stuck.
Here is my code might help you
Swift 2:
Swift 3:
Usage
if you are using HTTP connection and not https don't forget to add this
App Transport Security Settings
as dictionary and into itAllow Arbitrary Loads
as Boolean with valueYES
like in the below figure