在 Swift 1.2 中使用assetForURL
Posted
技术标签:
【中文标题】在 Swift 1.2 中使用assetForURL【英文标题】:Using assetForURL in Swift 1.2 【发布时间】:2015-06-24 06:43:11 【问题描述】:我正在尝试获取照片库中的图像,并且为此目的使用了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
我不知道我错过了什么......谢谢!
【问题讨论】:
您是否使用图像选择器让用户选择图像? 是的,但我能获得的唯一路径是以下类型之一:“assets-library://asset/asset.JPG?id=10C39CED-5CB9-49E3-8517-253F82EA3AC2&ext =JPG" 所以我让你使用assetURL方法..有什么想法吗? 好的,你能贴出你用来调用getImageFromPath函数的代码吗? 【参考方案1】: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
【讨论】:
【参考方案2】:岸川胜美,你是对的!问题是回报,我改变了我的方法,它很完美:
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)
)
谢谢!!
【讨论】:
以上是关于在 Swift 1.2 中使用assetForURL的主要内容,如果未能解决你的问题,请参考以下文章
UITabBarController 应用程序中 iCloud 同步的核心数据堆栈实现 (Swift 1.2)
addAttribute 在 Swift 1.2 (Xcode 6.3) 中失败
swift 1.2 覆盖 NSManagedObject 扩展中的 prepareForDeletion
如何设置使用导航控制器添加的 TableView 的背景图像 - Swift 1.2