Jaseel.Dev
Jaseel.Dev

Reputation: 769

Confused about async block inside loop

I want to print the data only after executing all loops inside the closure block, since I don't know how to use dispatch group exactly. I have tried in several ways.

What am I doing wrong here?

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)")
    }
    
    
    
}

Upvotes: 0

Views: 167

Answers (1)

Apps Maven
Apps Maven

Reputation: 1420

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 ")
            
    }

Output =

out

inner

inner

inner

out

inner

inner

inner

out

inner

inner

inner

now loop ended

Upvotes: 1

Related Questions