Доступ к данным о завершении - PullRequest
0 голосов
/ 31 марта 2020

Я создал обработчик завершения и вызываю его внутри следующей функции:

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

Мне нужно получить доступ к результату сотрудника вне этой функции и передать его в другие функции, как я могу получить доступ к результату сотрудника вне этой функции?

1 Ответ

1 голос
/ 31 марта 2020

По умолчанию вызов checkCreateTabPermission как:

checkCreateTabPermission { pass, employee, cancel in
    // here you can use the `employee`
}

должен позволить вам получить доступ к возвращенному employee. Таким образом, вы можете вызвать необходимый метод внутри completion из checkCreateTabPermission:

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`...
}
...