gpt4 book ai didi

xcode - 无法将表达式类型 UIImage 转换为类型 void swift

转载 作者:行者123 更新时间:2023-11-28 07:11:29 25 4
gpt4 key购买 nike

我有一个问题,我正在尝试创建一个接受 PFObject 作为参数的方法。本例中的 PFObject 是 facebook 图片 URL。该方法获取 URL 并将其基本上转换为图像。如果我只是使用这个代码块而不试图将它变成一个方法,我可以让它工作,但是我想从中创建一个方法,这样我就不必一直重复自己。当我尝试返回用户图像时,我不断收到错误 cannot convert the expressions type UIImage to type void swift

这是代码

func downloadFBUserImage(object: PFObject?) -> UIImage? {
var userProfilePhotoURLString = object?.valueForKey("pictureURL") as String?
if userProfilePhotoURLString != nil {
var pictureURL: NSURL = NSURL(string: userProfilePhotoURLString!)!
var urlRequest: NSURLRequest = NSURLRequest(URL: pictureURL)
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue(), completionHandler: { (NSURLResponse response, NSData data, NSError error) -> Void in
if error == nil && data != nil {
var userProfilePic: UIImage? = UIImage(data: data)
return userProfilePic
}


})
return nil
}

最佳答案

错误报告 sendAsynchronousRequestcompletionHandler 被定义为向您传递 responsedataerror 对象,但它期望 completionHandler 本身不返回任何值。但是您正在尝试从该 completionHandler 闭包中返回一个值。

最重要的是,您不能简单地从您的函数返回 UIImage,因为您正在执行异步方法(即,即使您立即从函数返回,数据也会稍后返回)。因此,采用异步模式:

func downloadFBUserImage(object: PFObject?, completionHandler: (UIImage?, NSError?) -> Void) {
if let userProfilePhotoURLString = object?.valueForKey("pictureURL") as? String {
let pictureURL = NSURL(string: userProfilePhotoURLString)!
let urlRequest = NSURLRequest(URL: pictureURL)
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in
if data != nil {
var userProfilePic = UIImage(data: data)
completionHandler(userProfilePic, nil)
} else {
completionHandler(nil, error)
}
}
}
}

并且您可以使用与 sendAsynchronousRequest 相同的完成处理程序模式来调用它:

downloadFBUserImage(object) { image, error in 
if image == nil {
println(error)
} else {
// use the image here
}
}

// but don't try to use asynchronously retrieved image here

关于xcode - 无法将表达式类型 UIImage 转换为类型 void swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com