Swift 传递具有相同名称的函数会得到;模棱两可;错误
我正在尝试使用以下typealias传递函数以定义它:Swift 传递具有相同名称的函数会得到;模棱两可;错误,swift,swift4,Swift,Swift4,我正在尝试使用以下typealias传递函数以定义它: typealias AuthFunction = (String, String, AuthDataResultCallback?) -> () 然后在以下功能中使用: private func checkAuth(authFunc: AuthFunction) { if emailTextField.text == "" { showAlert(title: String.Loca
typealias AuthFunction = (String, String, AuthDataResultCallback?) -> ()
然后在以下功能中使用:
private func checkAuth(authFunc: AuthFunction) {
if emailTextField.text == "" {
showAlert(title: String.Localized.Common.error,
message: String.Localized.Common.enterEmailAndPassword)
} else {
guard let email = emailTextField.text,
let password = passwordTextField.text else { return }
authFunc(email, password) { [weak self] (user, error) in
guard let strongSelf = self else { return }
strongSelf.checkAfterAuth(error)
}
}
}
我这样做是为了调用一些Firebase auth函数,这些函数执行不同的操作,但结果相同。我还想看看是否可以用这种方式重构,因为我以前从未尝试过
这样打电话时效果很好:
checkAuth(authFunc: Auth.auth().createUser)
我遇到的问题是firebase SDK有两个以signIn
开头的函数:
signIn(withEmail: , password:, completion:)
signIn(with:, completion:)
signIn(withEmail:, link:, completion:)
这意味着在调用checkAuth(authFunc:Auth.Auth().signIn)
时,我得到了对“signIn”的模糊使用,因为signIn
有多个定义
这有什么关系吗
更新:
两个调用上的Firebase定义:
- (void)createUserWithEmail:(NSString *)email
password:(NSString *)password
completion:(nullable FIRAuthDataResultCallback)completion;
- (void)signInWithEmail:(NSString *)email
password:(NSString *)password
completion:(nullable FIRAuthDataResultCallback)completion;
你可以这样写:
checkAuth(authFunc: Auth.auth().signIn(withEmail:password:completion:))
checkAuth(authFunc: Auth.auth().signIn(withEmail:link:completion:))
(您可能在#selector()
中发现了类似的符号)完成块在firebase中有不同的签名。@ShauketSheikh我认为您没有权利,请参阅我的更新签名?签名
是用电子邮件签名