Ios 函数在完成处理程序完成之前完成它的执行

Ios 函数在完成处理程序完成之前完成它的执行,ios,swift,macos,cocoa,Ios,Swift,Macos,Cocoa,我想返回从HelperConnection.shared.getInfo()计算得出的结果。但我总是在结果变量中得到零(也是在group.wait之后)。如何在HelperConnection.shared.getInfo()完成之前停止当前函数的执行 func install(lists:[String]) { let group = DispatchGroup() var result : String! if lists.count != 0 {

我想返回从HelperConnection.shared.getInfo()计算得出的结果。但我总是在结果变量中得到零(也是在group.wait之后)。如何在HelperConnection.shared.getInfo()完成之前停止当前函数的执行

  func install(lists:[String]) {
    let group = DispatchGroup()
    var result : String!

    if lists.count != 0 {
        for i in lists {
            group.enter()
            HelperConnection.shared.getInfo(str: i, completion: { (str) in
                if str == "1" {
                    DispatchQueue.main.async {
                        result = str
                        group.leave()
                    }
                } else {
                    DispatchQueue.main.async {
                        result = "Hello"
                        group.leave()
                    }
                }
            })
        }
    }
    print(result)
    print(".........")
    group.wait(timeout: .now() + 5)
    print(result)
    return result
   }

使用
notify
而不是
wait
并添加完成处理程序。强制异步任务同步是不好的做法

func install(lists:[String], completion: @escaping: (String)->Void) {
    let group = DispatchGroup()
    var result = ""

    if lists.isEmpty { (completion("")) }
    for i in lists {
        group.enter()
        HelperConnection.shared.getInfo(str: i, completion: { str in
            defer(group.leave())
            if str == "1" {
               result = str
            } else {
               result = "Hello"
            }
        })
    }       

    group.notify(queue: DispatchQueue.main) {
        print(".........")
        print(result)
        completion(result)
   }
}

我在程序中包含了下面的代码。但是print语句没有被执行。group.notify(queue:DispatchQueue.main){print(result)}仅当
lists
为空时才执行该行。我检查了这一点。但我的名单不是空的。我在if列表上方添加了一个打印。I空。现在我得到的输出是[“user1”,“user2”]nil………我没有写完成(result)。我的函数定义是func install(list:[String]){}。
HelperConnection.shared.getInfo
是否返回任何内容?