2016-11-21 2 views
2

Ich bin neu in Swift, bekomme Fehler für [.publicProfile].Swift 3 gibt "function of expression is ambiguous ohne mehr context" -Fehler für facebook login zurück

Art des Ausdrucks ist nicht eindeutig, ohne mehr Kontext Fehler

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

Methode Signatur:

loginManager.logIn(<#T##permissions: [ReadPermission]##[ReadPermission]#>, viewController: <#T##UIViewController?#>, completion: <#T##((LoginResult) -> Void)?##((LoginResult) -> Void)?##(LoginResult) -> Void#>) 
+1

Was ist die Signatur für loginManager.logIn()? Das ist wahrscheinlich auch deine Antwort. – picciano

+0

aktualisierte Frage mit Unterschrift. – Sandy

Antwort

3

ich es gelöst habe, wie ich diese Methode war die Schaffung in Manager welche Unterklasse von NSObject Klasse. So passierte Selbst für viewController gab mir Problem. Also habe ich behoben, indem ich vonViewController anstelle von selbst übergeben habe. Das ist alles.

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

In der letzten Aktualisierung FacebookLogin API sollten Sie Parameternamen vor dem ersten Parameter hinzu:

loginManager.logIn(readPermissions: [ .publicProfile], ... 
Verwandte Themen