在 Swift 1.2 中使用 assetForURL
Using assetForURL in Swift 1.2
我正在尝试获取照片库中的图片,为此我正在使用 assetForURL,但我一直收到错误 "Cannot invoke 'assetForURL' with an argument list of type '(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
}
}
我不知道我错过了什么..谢谢!
ALAssetsLibraryAssetForURLResultBlock
和 ALAssetsLibraryAccessFailureBlock
没有 return 值。 (-> Void
表示没有 return 值。)
(ALAsset!) -> Void
或 (NSError!) -> Void
所以你不应该 return image
或 error
在这些块中。例如,只需在块中分配局部变量。 return 块外的变量。
如下所示:
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
}
}
岸川胜美,你说的对!问题是 return,我改变了我的方法,它完美地工作:
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)
})
}
谢谢!!
我正在尝试获取照片库中的图片,为此我正在使用 assetForURL,但我一直收到错误 "Cannot invoke 'assetForURL' with an argument list of type '(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
}
}
我不知道我错过了什么..谢谢!
ALAssetsLibraryAssetForURLResultBlock
和 ALAssetsLibraryAccessFailureBlock
没有 return 值。 (-> Void
表示没有 return 值。)
(ALAsset!) -> Void
或 (NSError!) -> Void
所以你不应该 return image
或 error
在这些块中。例如,只需在块中分配局部变量。 return 块外的变量。
如下所示:
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
}
}
岸川胜美,你说的对!问题是 return,我改变了我的方法,它完美地工作:
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)
})
}
谢谢!!