2016-01-14 3 views
0

Я использовал GameViewController для аутентификации плеера, а после входа в мой класс меню и записи протокола GKGameCenterControllerDelegate дала мне ошибку, Type 'Menu' does not conform to protocol 'GKGameCenterControllerDelegate'. Я не понимаю, что означает эта ошибка и как ее исправить. Я пробовал вещи из разных мест, но я не думаю, что понимаю, как это сделать правильно.Невозможно реализовать GKGameCenterControllerDelegate

Это линия, по которой я получаю ошибку и находится под словом Menu.

class Menu: SKScene, GKGameCenterControllerDelegate 

ответ

0

Протокол GKGameCenterControllerDelegate, as the documentation specifies, имеет один метод, который необходим: gameCenterViewControllerDidFinish. Вы должны реализовать этот метод в своем классе Menu.

EDIT: В ответ на ваш комментарий, я предоставлю более подробное объяснение.

Протокол - это интерфейс, который включает в себя набор функций, которые, как ожидается, будут реализованы. Предполагается, что все, что реализует этот протокол, называется делегатом, определяет все функции в этом наборе. Эти функции будут использоваться другими классами, которые ссылаются на вашу реализацию и будут называть их необходимыми.

Подумайте, как работать в банке. Вы кассир, и вы несете ответственность за работу с клиентами и раздачу денег. Однако иногда у вашего ящика не хватит денег, чтобы дать, поэтому вам нужно попросить своего менеджера получить больше из хранилища. Теперь неважно, какой менеджер получает наличные деньги для вас. Это может быть ваш непосредственный, его босс, вплоть до владельца компании. Все, о чем вы заботитесь, это возможность получать наличные деньги, чтобы вы могли продолжать помогать клиентам. У вас, как у кассира, будет определенный протокол, который включает в себя такой метод: func requestCash(amount: Int) -> Int?. У вас также будет делегат, который несет ответственность за реализацию этого метода или в нашем контексте, кто-то, чья работа заключается в том, чтобы получить ваши деньги. Теперь, когда у вас мало денег, у вас есть способ получить больше.

Итак, когда вы запускаете свою работу в качестве кассира, вам требуется, чтобы ваш менеджер имел возможность получать наличные. Скажем, они нанимают нового парня, у которого нет старшинства, чтобы открыть хранилище. Ну, он не сработает для тебя. Когда он скажет, что он будет вашим менеджером в течение дня (или реализует ваш протокол), вы знаете, что он не может получить наличные деньги из хранилища (не реализует ваш метод). Итак, вы жалуетесь. Таким образом, вы видели ошибку.

Примечание: у вас могут быть дополнительные методы протокола. Это совершенно справедливо (в нашем примере выше, это может быть что-то вроде func approveLoanRequest(loan: Loan) -> Bool - вы можете просто попросить клиентов вернуться в другой день, чтобы получить одобренный запрос на кредит, в повседневной жизни это не обязательно). В этом случае методы не вызывают, если они не реализованы, и класс с протоколом не выдает ошибок, если они не реализованы.

+0

ОК. Это сработало. Не могли бы вы объяснить, что делает этот метод и почему он позволяет ему работать? – Sharukh

Смежные вопросы