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)")
}
}
myDispatchGroup.leave()you can print .DispatchGroupmakes no sense in the context of a single asynchronous task.