2017-05-04 98 views
0

我正試圖在swift-3中實現Google Signin,但我遇到了一個非常奇怪的錯誤,我正在關注鏈接https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift。但是我每次都會看到這個錯誤,一次又一次地實現它。 我在橋接頭中添加了以下內容。'AppDelegate'不符合協議'GIDSignInDelegate'

#import <Google/SignIn.h> 

我已經安裝了吊艙GoogleSignin pod 'Google/SignIn'

這是我的AppDelegate文件代碼

class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate { //<--Here it gives the error 
     //Method implemented but giving the error 
     func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 
     //TODO 
     } 
    } 

'的AppDelegate' 不符合協議 'GIDSignInDelegate'

我已經試過重新安裝莢

我有t清洗和其他的事情,但沒有注意到幫助。

+0

我想你應該閱讀關於協議和代表。 –

+0

您還沒有在'GIDSignInDelegate'委託中添加'didDisconnectWith'方法 –

+0

@UmairAfzal嗯,我已經閱讀了代表和協議,並且在'didDisconnectWith'方法的前面寫了一個單詞「optional」,這意味着它不是必須的使用該方法。 @NiravD使用它沒有任何區別。 問題依然存在 –

回答

1

我只花了3個小時這一點。您需要實現正確的簽名是:

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)

但是 - 檢查無論你是不是壓倒一切的Error定義在您的應用程序(或其他類GIDSignInGIDGoogleUser)。我在我的應用程序中定製了一個Error類,它已經覆蓋了默認的Error類。在我重命名我的Error課後,問題就消失了。

Swift編譯器在這裏並沒有太大的幫助,因爲它在錯誤信息中顯示了兩種情況下的Error類型,但沒有指出它們都是不同的Error類型。

教訓是不要使用Foundation中已經用於我的課程的名稱。

+0

是的,我也有同樣的問題這是由開發人員創建的錯誤類。我一直在掙扎,好像天天一樣。那麼我解決了它,但沒有時間在這裏更新它。 是的,這是解決問題的辦法。 –

2

你需要添加以下兩個方法的appdelegate

func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) { 

} 

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 

} 
+0

這是這個manodatory'didDisconnectWith' –

+0

它認爲這是強制性的。 – KKRocks

+0

ok .............. –

0

您必須實現所有需要的GIDSignInDelegate方法消除這種誤差。所以檢查GIDSignInDelegate協議中的方法列表並在AppDelegate類中實現。

而且在didFinsishLaunchingOption方法設置爲代表:

GIDSignIn.sharedInstance().delegate = self 
+0

我已經實現了所有必需的方法(其中只有一個存在)。 另外我實現了可選的一個,但它沒有解決問題。 –

+0

您是否在AppDelegate類中設置了GIDSignIn的委託? –

+0

是的,我做到了。但沒有一樣的。 –

-1

這是一個非常愚蠢的錯誤,我在我的代碼中有一個名爲Error的自定義類,它引發了問題,因爲GidSignInDelegate方法無法識別引用哪個錯誤類。如果你犯了同樣的愚蠢錯誤,任何人都在尋找答案,請仔細檢查。

+0

我不明白這個評論的投票權。 –