尝试使用下面的NSURL类时出错,下面的代码实际上是试图将我从Facebook拉入的图像存储到imageView中.错误如下:
value of optional type 'NSURL?' not unwrapped,did you mean to use '!' or '?'
不知道为什么会这样,帮忙!
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.
}
}
解决方法
你正在调用的NSURL构造函数有这个签名:
convenience init?(string URLString: String)
?表示构造函数可能不返回值,因此它被视为可选.
NSData构造函数也是如此:
init?(contentsOfURL url: NSURL)
快速解决方法是:
let myProfilePictureURL = NSURL(string: "http://graph.facebook.com/bobdylan/picture") let imageData = NSData(contentsOfURL: myProfilePictureURL!) self.myImage.image = UIImage(data: imageData!)
最好的解决方案是检查(解包)这些选项,即使您确定它们包含值!
你可以在这里找到更多关于期权的信息:link to official Apple documentation.