我试图获取照片库上的图像,并且我为此目的使用assetForURL,但我总是得到错误"无法调用' assetForURL'使用类型'的参数列表(NSURL,resultBlock:(ALAsset!) - > Void,(NSError!) - > Void)'"
我在这里检查了问题以及其他人如何使用该方法,但我总是得到同样的错误..这是我的方法:
class func getImageFromPath(path: String) -> UIImage? {
let assetsLibrary = ALAssetsLibrary()
let url = NSURL(string: path)!
assetsLibrary.assetForURL(url, resultBlock: { (asset: ALAsset!) -> Void in
return UIImage(CGImage: asset.defaultRepresentation().fullResolutionImage())
}) { (error: NSError!) -> Void in
return nil
}
}
我不知道我错过了什么...... thx!
答案 0 :(得分:3)
ALAssetsLibraryAssetForURLResultBlock
和ALAssetsLibraryAccessFailureBlock
不会返回值。 (-> Void
表示没有返回值。)
(ALAsset!) -> Void
或(NSError!) -> Void
因此,您不应在这些块中返回image
或error
。例如,只在块中分配局部变量。并在块外返回变量。
如下所示:
class func getImageFromPath(path: String) -> UIImage? {
let assetsLibrary = ALAssetsLibrary()
let url = NSURL(string: path)!
var image: UIImage?
var loadError: NSError?
assetsLibrary.assetForURL(url, resultBlock: { (asset) -> Void in
image = UIImage(CGImage: asset.defaultRepresentation().fullResolutionImage().takeUnretainedValue())
}, failureBlock: { (error) -> Void in
loadError = error;
})
if (!error) {
return image
} else {
return nil
}
}
答案 1 :(得分:0)
class func getImageFromPath(path: String, onComplete:((image: UIImage?) -> Void)) {
let assetsLibrary = ALAssetsLibrary()
let url = NSURL(string: path)!
assetsLibrary.assetForURL(url, resultBlock: { (asset) -> Void in
onComplete(image: UIImage(CGImage: asset.defaultRepresentation().fullResolutionImage().takeUnretainedValue()))
}, failureBlock: { (error) -> Void in
onComplete(image: nil)
})
}
THX !!