Skip to main content
 首页 » 编程设计

ios之在 Swift 1.2 中使用 assetForURL

2024年01月01日73jiqing9006

我正在尝试获取照片库中的图像,为此我正在使用 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 
    } 
} 

我不知道我错过了什么..谢谢!

请您参考如下方法:

ALAssetsLibraryAssetForURLResultBlock 和 ALAssetsLibraryAccessFailureBlock 不返回值。 (->Void表示没有返回值。)

(ALAsset!) -> Void 或 (NSError!) -> Void

所以你不应该在这些 block 中返回image 或error。例如,只需在 block 中分配局部变量。并返回 block 外的变量。

如下所示:

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 
    } 
}