Ios [Swift 4,Xcode 9,GCD]在刷新ui之前加载数据

Ios [Swift 4,Xcode 9,GCD]在刷新ui之前加载数据,ios,swift,xcode,grand-central-dispatch,swift4,Ios,Swift,Xcode,Grand Central Dispatch,Swift4,我正在尝试在加载所有图像后设置滚动视图。但无论我尝试什么,都没有加载任何内容,或者多次加载图像(如果在循环结束时粘贴DispatchQueue.main.async) 如何在下载所有图像后仅调用一次setupScrollView 这就是下载的功能: func downloadImages(arrayOfURLS: [URL]) { var imagesForPost: [UIImage] = [] print("Ссылок столько - ", arrayOfURLS.c

我正在尝试在加载所有图像后设置滚动视图。但无论我尝试什么,都没有加载任何内容,或者多次加载图像(如果在循环结束时粘贴DispatchQueue.main.async)

如何在下载所有图像后仅调用一次setupScrollView

这就是下载的功能:

func downloadImages(arrayOfURLS: [URL]) {

    var imagesForPost: [UIImage] = []
    print("Ссылок столько - ", arrayOfURLS.count)

    DispatchQueue.global().async() {

        for url in arrayOfURLS {
            ImageDownloader.default.downloadImage(with: arrayOfURLS, options: [], progressBlock: nil) {
                (image, error, url, data) in

                if error != nil {
                    print(error)
                    return
                }

                imagesForPost.append(image!)
                print("How much images - ", imagesForPost.count)
            }

        }

        DispatchQueue.main.async {

            self.setupScrollView(arrayOfImages: imagesForPost)
        }

    }
}

您可以尝试使用
dispatchGroup
,但首先将
imagesForPost
声明为实例变量

让dispatchGroup=dispatchGroup()
用于arrayOfURLS中的url{
dispatchGroup.enter()
ImageDownloader.default.DownloadeImage(带:arrayOfURLS,选项:[],progressBlock:nil){
中的(图像、错误、url、数据)
延迟{dispatchGroup.leave()}
如果错误!=nil{
打印(错误)
回来
}
self.imagesForPost.append(图像!)
打印(“多少图像-”,imagesForPost.count)
}
}
dispatchGroup.notify(队列:.main){

print(“两个函数都完成了,但没有帮助。dispatchGroup.notify(queue:.main)在加载数据之前被调用。可以尝试编辑吗,我知道它会阻止主线程,所以在ImageDownloader中添加DispatchQueue.global().async,可以试试吗???哦,对不起-我的错。我忘记删除DispatchQueue.global().async(){…}当插入dispatchGroup时。现在一切都很好。谢谢一个lotHappy coding=D