我試圖從給定的資源庫URL獲取UIImage對象。我想爲我做這個功能。 指定的網址是:assets-library://asset/asset.JPG?id=46811D66-DBB4-46D9-BBA2-0CF0D58FC7AD&ext=JPG
我用下面的方法試了一下:嘗試從資源庫Url獲取UIImage
var url = NSURL() // url = "assets-library://asset/asset.JPG?id=46811D66-DBB4-46D9-BBA2-0CF0D58FC7AD&ext=JPG" got it from another scene
var asset = ALAssetsLibrary()
var tempImage = UIImage()
tempImage = getUIImagefromAsseturl(url)
func getUIImagefromAsseturl (url: NSURL) -> UIImage {
asset.assetForURL(url, resultBlock: {
(asset: ALAsset!) in
if asset != nil {
var assetRep: ALAssetRepresentation = asset.defaultRepresentation()
var iref = assetRep.fullResolutionImage().takeUnretainedValue()
var image = UIImage(CGImage: iref)
return image
}
}, failureBlock: {
(error: NSError!) in
NSLog("Error!", nil)
}
)
}
但我總是得到一個錯誤,說: 不能援引「assetForURL」類型的參數列表「(NSURL,resultBlock: (ALAsset!) - > _,failureBlock:(NSError!) - > _)'
有人能告訴我我在做什麼錯嗎?
thanx您的回覆,但更改代碼到您的代碼,仍然會引發同樣的錯誤。 – dennis605
我再次更新了代碼。試試看。距離你的距離稍遠,但功能上與我上次的編輯相同。這個驗證在Xcode 6.3.1中工作。不像你所做的那樣在'resultBlock'中測試nil,我做了一個標準的Swift'如果let'綁定。它似乎已經安撫Xcode。 – justinpawela
另外,當定義'resultBlock'(以及'failureBlock')時,我使用'{asset in ...}'而不是'{(asset:ALAsset!)in ...}'。這可以讓Xcode在處理塊時使用推斷鍵入,儘管它確實不應該有所作爲。 Xcode + Swift有時候仍然很敏感。 – justinpawela