UIImage(data: NSData) error: Missing argument for parameter 'inBundle' in call

UIImage(data: NSData) error: Missing argument for parameter 'inBundle' in call

我正在为看起来像“http://graph.facebook.com/(id)/picture?type=large”的 Facebook 个人资料图片存储 NSURL,其中 id 是用户的 ID。

我想在 UIImage

中显示来自 url 的图像

我正在尝试这样做:

var data = NSData(contentsOfURL: profilePictureURL)

cell.backgroundImage = UIImage(data: data)

但是 XCode 在第二行抛出错误:

"Missing argument for parameter 'inBundle' in call" 但显然这不是此调用中的参数。我什至尝试像 UIImage(data: data, inBundle: nil) 一样在之前和之后添加一次并反转但它说 "extra argument inBundle"

请帮忙!

**** 编辑 ****

发现问题:

cell.backgroundImage = UIImage(data: data)

应该是

cell.backgroundImage.image = UIImage(data: data)

如您所见,您想要设置 cell.backgroundImageimage 属性。此外,您还需要打开可选的包装。

您可以进行强制展开:

let data = NSData(contentsOfURL: profilePictureURL)
cell.backgroundImage.image = UIImage(data: data!)

或者,更安全一点,可选绑定:

if let data = NSData(contentsOfURL: profilePictureURL) {
    cell.backgroundImage.image = UIImage(data: data)
}

而且,如果你想特别谨慎,异步执行此操作,它看起来像:

cell.backgroundImage.image = nil  // initialize it to nil before we go to get image asynchronously

NSURLSession.sharedSession().dataTaskWithURL(profilePictureURL) { data, response, error in
    if data == nil {
        println("dataTaskWithURL error: \(error)")
    } else {
        if let image = UIImage(data: data) {
            dispatch_async(dispatch_get_main_queue()) {
                cell.backgroundImage.image = image
            }
        }
    }
}