1

写真ライブラリにある画像を取得しようとしていますが、その目的でassetForURLを使用していますが、常にエラーが発生します「'(NSURL、resultBlock : (ALAsset!) -> ボイド, (NSError!) -> ボイド)'"

ここで質問を確認し、他の人がその方法をどのように使用しているかを確認しましたが、常に同じエラーが発生します..これが私の方法です:

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!

4

2 に答える 2

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
    }
}
于 2015-04-17T12:27:39.623 に答える