我是Swift和iOS的新手,这里发生了一些有趣的事情。

在我的ViewController中,我正在使用此代码,并且效果很好。

let loginManager = LoginManager()


loginManager.logIn([ .publicProfile, .email ], viewController: self) { loginResult in
    switch loginResult {
    case .failed(let error):
        print(error)
    case .cancelled:
        print("User cancelled login.")
    case .success(let grantedPermissions, let declinedPermissions, let accessToken):
        print("Logged in!\(accessToken)")
    }
}

当我将其放入其他类(例如LoginService)时,出现错误

在没有更多上下文的情况下,表达类型不明确

这是LoginService类的功能
  func doFaceBookLogin(viewController: UIViewController?) {
        let loginManager = LoginManager()

        loginManager.logIn([ .publicProfile, .email ], viewController) { loginResult in
            switch loginResult {
            case .failed(let error):
                print(error)
            case .cancelled:
                print("User cancelled login.")
            case .success(let grantedPermissions, let declinedPermissions, let accessToken):
                print("Logged in!\(accessToken)")
            }
        }
    }

我在这里做错了什么?

最佳答案

第二个方法调用的问题是您忘了用viewController方法提及第二个参数标签logIn

loginManager.logIn([ .publicProfile, .email ], viewController: viewController) { loginResult in

}

关于ios - 在没有更多上下文的情况下,表达式的类型是模棱两可的-在Facebook包装器中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40973214/

10-14 23:44