我正在从Parse下载图像(成功)。我的问题是,我可以将获取图像的函数放在一个单独的类中,只是将 UIImage 作为返回的参数吗?见下面的例子。
在下面函数的两个return语句中,我收到此错误:
func getImgfromParse() -> UIImage {
//var imgFile: PFFile = PFFile()
var query = PFQuery(className: "puzzledata")
query.whereKey("wordAnswer", equalTo: "asd")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
println("Found something")
for object in objects {
println(object.objectId)
let pointsPerTile = object["pointsPerTile"] as String
let timeAllowed = object["timeAllowed"] as String
let wordAnswer = object["wordAnswer"] as String
let wordJumbled = object["wordJumbled"] as String
let imgFile = object["imageFile"] as PFFile
imgFile.getDataInBackgroundWithBlock({
(imageData: NSData!, error: NSError!) -> Void in
if (error == nil) {
let image = UIImage(data:imageData)
return image
}
})//getDataInBackgroundWithBlock - end
}
}
else {
println("%@", error)
}
return UIImage(data: "profile.jpg")
}
}
答案 0 :(得分:2)
我认为问题出在你的块中
imgFile.getDataInBackgroundWithBlock({
(imageData: NSData!, error: NSError!) -> Void in
if (error == nil) {
let image = UIImage(data:imageData)
return image
}
})//getDataInBackgroundWithBlock - end
你可以看到该块提供了两个图像数据和错误,并期望你什么都不返回,即无效,但你从这里返回图像,这就是为什么它显示错误为&#39 ;无法将表达式UIImage
转换为void'。
我认为不是返回图像,而是应该调用一个以图像为参数的函数,并将图像保存在那里/用图像做你的东西
imgFile.getDataInBackgroundWithBlock({
(imageData: NSData!, error: NSError!) -> Void in
if (error == nil) {
let image = UIImage(data:imageData)
saveImage(image)
}
})//getDataInBackgroundWithBlock - end
答案 1 :(得分:0)
你的方法是当前的,我使用的是这样的,但是这里工作得很好..你也可以这个..
func imageResize (imageObj:UIImage, sizeChange:CGSize)-> UIImage{
let hasAlpha = false
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale)
imageObj.drawInRect(CGRect(origin: CGPointZero, size: sizeChange))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
return scaledImage
}
答案来源: - http://www.jogendra.com/2014/11/image-resize-in-swift-ios8.html
请看这个答案一切正常