如何将转义闭包中的数据获取到UICollectionview中



我正在从S3存储桶下载数据,以填充UIcollectionview表。我知道我必须使用转义闭包来使用数据,但我仍然无法将数据放入我的集合视图中。在下面的代码中,我的单元格计数仍然返回0,而不是文件的实际数量,即2。如何将数据导入UIcollectionview代码?以下代码:

func listFiles(completionHandler: @escaping (Array<String>) -> ()){

var audioFileArray: [String] = []

resultSink = Amplify.Storage.list()
.resultPublisher
.sink {
if case let .failure(storageError) = $0 {
print("Failed: (storageError.errorDescription). (storageError.recoverySuggestion)")
}
}

receiveValue: { listResult in

print("Completed")

listResult.items.forEach { item in

audioFileArray.append(item.key)
}

for audio in audioFileArray{

self.dowloadAudioFileName(audioFiles: audio)
}

completionHandler(audioFileArray)


print("The audio files are: (audioFileArray)")

}

self.soundBoardView.reloadData()
}

var globalAudioFileArray: [String] = []
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
listFiles(){ (audioFileArray) in
self.globalAudioFileArray = audioFileArray
}
return globalAudioFileArray.count
}

为什么要获取函数部分中numberOfItems的数据?此外,当您设置数组而不是列表文件函数的末尾时,还需要重新加载集合视图。

你应该把它们放在下面这样的单独函数中,你可以在viewDidLoad中调用它;

func getData() {
listFiles(){ (audioFileArray) in
self.globalAudioFileArray = audioFileArray
self.soundBoardView.reloadData()
}
}

相关内容

  • 没有找到相关文章

最新更新