2016-09-26 36 views
8

我用下面的代碼到Facebook登錄添加到UIButton的行動:Facebook的斯威夫特SDK:表達loginManager類型是不明確的錯誤

func facebookButtonClicked(sender: UIButton) { 
    let loginManager = LoginManager() 

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

的Xcode拋出以下錯誤:

Type of expression is ambiguous without more context 

[.PublicProfile]部分。

任何想法我在做什麼錯在這裏?

+0

有同樣的問題。期待看到迴應。 – Chris

回答

1

所以我通過使用自最近更新以來的正確的Facebook語法稍微解決了這個問題。

@IBAction func facebookBtnTapped(_ sender: AnyObject) { 
let loginManager = LoginManager() 
    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!") 
     } 
    } 

} 
+0

它不適合我。 – LKM

2

最近,我解決了這個錯誤。

與ReadPermission.publicProfile

這樣就可以解決問題更換.publicProfile。

1

改變

viewController: self 

viewController: nil 

解決了這個問題對我來說

+0

奇怪的是,這解決了它對我來說。不知道爲什麼。 –

8

嘗試此最新SDK

func facebookButtonClicked(sender: UIButton) { 
    let loginManager = LoginManager() 

    loginManager.logIn(readPermissions: [.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") 
     } 
    } 
} 
+0

.Failed更改爲.failed&similar –

5

您應該添加readPermissons:第一個參數之前:

loginManager.logIn(readPermissions: [ .publicProfile], ... 
0

最終的解決方案是這樣的一個:

let loginManager=LoginManager() 
    loginManager.logIn(readPermissions: [ReadPermission.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") 
     } 
    } 

Facebook還沒有更新自己的代碼的例子......

0
@objc func loginButtonClicked(sender : UIButton) { 
    let loginManager = LoginManager() 

    loginManager.logIn(readPermissions: [.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") 
     } 
    } 
     } 
+1

僅有代碼的答案通常會被降低評分。任何想要使用你的解決方案[編輯]並提供一些你的代碼的上下文來解釋它的工作原理是有益的。 –