【问题标题】: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

标签: ios arrays swift completionhandler


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    相关资源
    最近更新 更多