Я пытаюсь получить объект UIImage из данного URL-адреса Asset-Library. Я хочу, чтобы функция делала это для меня. Данный Url является: assets-library://asset/asset.JPG?id=46811D66-DBB4-46D9-BBA2-0CF0D58FC7AD&ext=JPG
Я попробовал его со следующим подходом:Попытайтесь получить UIImage из библиотеки инструментов Url
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', как и вы, я выполнил стандартную привязку Swift' if let'. Кажется, это успокоило Xcode. – justinpawela
Также я использовал '{asset in ...}' вместо '{(asset: ALAsset!) In ...}' при определении 'resultBlock' (а также' failureBlock'). Это позволяет Xcode просто использовать выводимую типизацию при обработке блоков, хотя это действительно не должно иметь значения. Иногда Xcode + Swift может быть очень трогательным. – justinpawela