我已使用GameViewController
对播放器进行身份验证,并且在进入我的Menu类并编写协议时GKGameCenterControllerDelegate
会给我一个错误Type 'Menu' does not conform to protocol 'GKGameCenterControllerDelegate'
。我不明白这个错误意味着什么,以及如何解决它。我尝试过来自不同地方的东西,但我不认为我理解如何正确地做到这一点。
这是我收到错误并在Menu
字词下面的行。
class Menu: SKScene, GKGameCenterControllerDelegate
答案 0 :(得分:0)
GKGameCenterControllerDelegate
协议as the documentation specifies有一个必需的方法:gameCenterViewControllerDidFinish
。您需要在Menu
类中实现此方法。
编辑:在回复您的评论时,我会提供更深入的解释。
协议是一个接口,它包含一组预期要实现的功能。任何实现该协议的东西,称为委托,都应该定义该集合中的所有函数。这些函数将被其他引用实现的类使用,并在必要时调用它们。
把它想象成在银行工作。您是出纳员,您有责任与客户合作并分发资金。但是,有时您的抽屉会用尽钱,所以您必须要求您的经理从保险库中取出更多。现在,哪位经理为您取回现金并不重要。它可以是你的直接人,他的老板,一直到公司的老板。您所关心的只是能够获得现金,以便您可以继续帮助客户。作为出纳员,您将定义一个包含如下方法的协议:func requestCash(amount: Int) -> Int?
。您还将有一名代表负责实施该方法,或者在我们的背景下,某人的工作就是为您提供现金。现在,无论何时你的资金不足,你都有办法获得更多。
因此,当您作为出纳员开始工作时,您需要经理能够为您提供现金。假设他们聘请了一个没有资格打开金库的新人。好吧,他不会为你工作。当他说他将成为你当天的经理(或实施你的协议)时,你知道他实际上无法从金库获得现金(没有实施你的方法)。所以,你抱怨。因此你看到的错误。
注意:您可以使用可选的协议方法。这完全有效(在我们上面的示例中,它可能类似于func approveLoanRequest(loan: Loan) -> Bool
- 您可以简单地要求客户在不同的日子回来批准贷款申请,这在您的日常工作中没有必要)。在这种情况下,如果未实现这些方法,则不调用这些方法,如果未实现,则带有协议的类不会抛出错误。