2016-09-19 4 views
0

Я переношу свое приложение в Swift 3, и я столкнулся с этой проблемой. Застрял в течение нескольких часов, и ничего, кажется, помогаетТип не соответствует протоколу, но он делает - переход на Swift 3

enter image description here

Вот мой код, это видно, что я с соблюдением протокола.

func loginButtonWillLogin(_ loginButton: FBSDKLoginButton!) -> Bool { 
    return true; 
} 

func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 
} 

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 

    if (error != nil){ 

    } else if (result.isCancelled){ 

    } else { 
     navigationController?.pushViewController(ContainerScreen(), animated: false); 
    } 
} 

Все, что я могу попытаться продвинуться вперед? Спасибо.

+0

Похоже, вы определили вложенный тип 'Ошибка' в расширении' UIViewController', который противоречит протоколу 'Error' stdlib - это правда? – Hamish

+0

Нет, у меня нет расширения UIViewController в моем проекте. –

+2

Да, странно. Если вы CMD + нажмите «Ошибка» в вашем методе 'loginButton', где Xcode возьмет вас? – Hamish

ответ

1

У вашего метода didCompleteWith есть некоторые проблемы, кажется, что он имеет несколько параметров в завершении. Но у вас их всего два.

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith completion : (button : FBSDKLoginButton, result : FBSDKLoginManagerLoginResult, error : Error) ->() { 

} 

У меня нет правильного синтаксиса здесь, но я думаю, что у вас есть концепция. У вашего завершения должно быть три параметра, вам не хватает FBSDKLoginButton.

+0

Thank вы за свой ответ. Я не могу найти документы с надлежащим синтаксисом, и я в настоящее время не могу отлаживать проект, так как у меня возникают проблемы с некоторыми cocoapods, но я буду комментировать, как только смогу попробовать ваше решение. –