Swift 3 returns "Expression type ambiguous without additional context" to enter facebook

I am new to Swift, getting an error for [.publicProfile].

Expression type ambiguous without additional context error

the code:

let loginManager = LoginManager()
    loginManager.loginBehavior = LoginBehavior.native;
    loginManager.logIn([.publicProfile], 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 \(grantedPermissions) \(declinedPermissions) \(accessToken)")
        }
    }

Method Signature:

loginManager.logIn(<#T##permissions: [ReadPermission]##[ReadPermission]#>, viewController: <#T##UIViewController?#>, completion: <#T##((LoginResult) -> Void)?##((LoginResult) -> Void)?##(LoginResult) -> Void#>)
+4
source share
2 answers

In the last updated FacebookLogin API, you must add the parameter name before the first parameter:

loginManager.logIn(readPermissions: [ .publicProfile], ...
+3
source

, , NSObject. "" viewController . , ViewController self. .

 func facebookLogin(fromViewController:UIViewController)  {
        let loginManager = LoginManager()
        loginManager.loginBehavior = LoginBehavior.native;

        loginManager.logIn([.publicProfile], viewController: fromViewController) { (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 \(grantedPermissions) \(declinedPermissions) \(accessToken)")
            }
        }

    }
+2

Source: https://habr.com/ru/post/1661491/


All Articles