访问变量输出完成块

问题描述 投票:0回答:1

我如何在完成区之外访问员工价值,以便在ViewController中的任何位置使用它?>

extension TabsParentViewController{
    class func checkCreateTabPermission(completion: @escaping PermCompletionWithCancel){
        RRS.s.permissionService.checkForPermission(.createTab, completion: { (pass, employee, cancel) in
            if !cancel {
                ActivityLogsBuilder.logActivity(forEmployee: employee, module: .tabs, action: ActivityLogsBuilder.action(from: LogAction.createTab, authorized: pass))
            }
            completion(pass, employee, cancel)
        })
    }
}
    

我如何在完成块之外访问雇员值,以便在ViewController扩展TabsParentViewController {类func checkCreateTabPermission(...]

默认情况下,将checkCreateTabPermission称为:
checkCreateTabPermission { pass, employee, cancel in // here you can use the `employee` }
应该使您能够访问返回的employee。因此,您可以在completioncheckCreateTabPermission中调用所需的方法:

checkCreateTabPermission { pass, employee, cancel in myMethod(employee: employee) }

或者如果要访问completion以外的员工,则可以在返回值后声明一个变量(默认为nil)以保存其值:

var myEmployee: Employee? checkCreateTabPermission { [weak self] pass, employee, cancel in self?.myEmployee = employee } // you could use `myEmployee` here, but you have to make sure its not nil, // in other words, `checkCreateTabPermission` has been called and retrieved one. if let myUnwrappedEmployee = myEmployee { // use `myUnwrappedEmployee`... }

swift closures completionhandler
1个回答
0
投票
应该使您能够访问返回的employee。因此,您可以在completioncheckCreateTabPermission中调用所需的方法:
© www.soinside.com 2019 - 2024. All rights reserved.