填充一个数组,然后调用一个函数

Posted

技术标签:

【中文标题】填充一个数组,然后调用一个函数【英文标题】:Fill an array and then call a function 【发布时间】:2020-05-11 14:47:41 【问题描述】:

在完成获取数据时,我会收到一个数据项。我想将此项目附加到一个数组中,然后调用数据,我该怎么做?我如何告诉函数等到所有数据都附加到数组中 - 并且数据数量不同。

self?.dataModel.fetchExportCSV(id: id, completion:  [weak self] in
    switch $0 
      case .success(let data):
          var arryData: [exportVO] = []
          arryData.append(data)

          //this is the fucntion that should be called after all the data are append to the array
          createCSV(data: arryData)

【问题讨论】:

使用DispatchGroupSemaphores 你能给我举个例子吗 你是说你的完成处理程序被多次调用还是你多次调用fetchExportCSV 【参考方案1】:
    self?.dataModel.fetchExportCSV(id: id, completion:  [weak self] in
        let dGroup = DispatchGroup()

      switch $0 
        case .success(let data):
          dGroup.enter()
          var arryData: [exportVO] = []
          arryData.append(data)
          dGroup.leave()
      

     //after switch case
      dGroup.notify(queue: .main) 
            createCSV(data: arryData)
      
    

将 .enter() .leave() 添加到 switch 中的所有案例

More Info

Dispatch group

DispatchSemaphore

【讨论】:

以上是关于填充一个数组,然后调用一个函数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Q 用异步调用填充数组

如何在异步调用期间填充数组并将其发送到响应对象中

用零填充缺失的用户输入

C语言子函数如何返回一个数组,主函数如何接收?

用数据库数据填充数组并在pickerView上调用它

循环内的异步函数完成后如何调用函数?