2015-04-17 67 views
1

我試圖獲取圖片庫上的圖片,並且爲此使用了assetForURL,但我一直得到錯誤「無法用參數調用'assetForURL' (NSURL,resultBlock:(ALAsset!) - > Void,(NSError!) - > Void)'「在Swift 1.2中使用assetForURL

我在這裏檢查了問題,以及其他人如何使用該方法,但我總是得到同樣的錯誤..這是我的方法:

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

您是否在使用圖像選擇器來讓用戶選擇圖像? – Jordan

+0

是的,但我能夠得到的唯一路徑是其中一種類型:「assets-library://asset/asset.JPG?id = 10C39CED-5CB9-49E3-8517-253F82EA3AC2&ext = JP G」所以我有tu使用assetURL方法..任何想法? – diegomen

+0

好的,你可以發佈你用來調用getImageFromPath函數的代碼嗎? – Jordan

回答

3

ALAssetsLibraryAssetForURLResultBlockALAssetsLibraryAccessFailureBlock不返回值。 (-> Void手段沒有返回值。)

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

所以,你不應該返回imageerror這些塊內。例如,只需在塊中分配局部變量。並返回塊外的變量。

象下面這樣:

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