我有以下功能,但它不断崩溃
dispatchGroup.leave()语句,我不明白为什么。根据我在网上发现的信息,每个dispatchGroup.leave()必须与一个dispatchGroup.enter()相关联,我认为我的函数就是这种情况。

self.kycRecords仅包含1个元素(目前)顺便说一句。

 @IBAction func checkCustomerList(_ sender: Any) {
        let dispatchGroup = DispatchGroup()

        for kycRecord in self.kycRecords {
            dispatchGroup.enter()
            ApiManager.sharedInstance.postUserToArtemis(kycRecord) {(response, error) in
                dispatchGroup.leave()
                if error != nil {
                    kycRecord.kycStatus = "failed"
                } else {
                    if response == true {
                        kycRecord.kycStatus = "passed"
                    } else {
                        kycRecord.kycStatus = "failed"
                    }
                }
            }
        }

        dispatchGroup.notify(queue: DispatchQueue.main, execute: {
            print("done")
            self.writeOutput()
        })
    }

它崩溃并显示以下消息:

线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

arrays - 离开DispatchGroup导致我的代码崩溃-LMLPHP

最佳答案

您可以在退出任何组之前检查在组中输入的计数数
通过以下方式补丁工作

let count = self.groupExecuting.debugDescription.components(separatedBy: ",").filter({$0.contains("count")}).first!.components(separatedBy: CharacterSet.decimalDigits.inverted).filter({Int($0) != nil})

10-06 00:02