Я реализовал функцию загрузки изображений.
Однако я обнаружил, что пользовательский интерфейс остановился, и у меня была асинхронная функция.
"(value) in" Передает значение безопасно, но если код попытается поместить значение в глобальную переменную, оно не будет выполнено.
Код:
var arr = 0
ImageDownload(url: urll!) // asynchronous function
{ (value) in // value = Image Height
DispatchQueue.main.async
{
arr = value
}
}
// I want use this line
print("\(arr)") // always print 0
Функция загрузки изображения:
func ImageDownload(url urll: URL, completion: @escaping (Int) -> Void)
{
let queue = DispatchQueue.global()
queue.async
{
if let imageSource = CGImageSourceCreateWithURL(urll as CFURL, nil)
{
if let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as Dictionary?
{
let pixelHeight = imageProperties[kCGImagePropertyPixelHeight] as! Int
if pixelHeight >= 2000
{
completion(pixelHeight/6)
}
else
{
completion(pixelHeight/5)
}
}
}
}
}
Пожалуйста, помогите мне