对循环内的异步块感到困惑

Confused about async block inside loop

我想在闭包块内执行完所有循环后才打印数据,因为我不知道如何准确使用调度组。我尝试了几种方法。

我做错了什么?

private func recognizeText(images: [UIImage]) {
    
    let myDispatchGroup = DispatchGroup()
    
    self.extractedTextfromImages(images: images) { blocks in
        myDispatchGroup.enter()
        
        for block in blocks {
            
            for line in block.lines {
                
                
                //save emirate id
                if isValidEmiratesID(emiratesID: line.text) == true {
                    
                    let id  = line.text
                    self.dt.id = id
                }
                
                // save name
                if line.text.lowercased().range(of: "name") != nil {
                    
                    
                    if let range = line.text.range(of: ":") {
                        let nm = line.text[range.upperBound...]
                        let name = String(nm.trimmingCharacters(in: .whitespaces))
                        self.dt.name = name
                    }
                }
                
            }
            
        }
        myDispatchGroup.leave()
    }
    
    myDispatchGroup.notify(queue: .main) {
        print("data is \(self.dt)")
    }
    
    
    
}
myDispatchGroup.enter()
              
        for i in 1...3 {
            
         print("out")
            for i in 1...3 {       
                     print("inner")   
                           } 
                       }
                myDispatchGroup.leave()
            
            
            myDispatchGroup.notify(queue: .main) {
                print(“now loop ended ")
            
    }

输出=

出来

出来

出来

现在循环结束