0

我曾经GameViewController对播放器进行身份验证,并且在进入我的菜单类并编写协议时GKGameCenterControllerDelegate给我一个错误,Type 'Menu' does not conform to protocol 'GKGameCenterControllerDelegate'. 我不明白这个错误是什么意思以及如何解决它。我尝试过来自不同地方的东西,但我认为我不明白如何正确地做。

这是我遇到错误的行,位于单词下方Menu

class Menu: SKScene, GKGameCenterControllerDelegate
4

1 回答 1

0

正如文档所指定的,该GKGameCenterControllerDelegate协议具有一种必需的方法:. 你需要在你的类中实现这个方法。gameCenterViewControllerDidFinishMenu

编辑:针对您的评论,我将提供更深入的解释。

协议是一个接口,包括一组预期要实现的功能。任何实现该协议的东西,称为委托,都应该定义该集合中的所有功能。这些函数将被引用您的实现的其他类使用,并在必要时调用它们。

把它想象成在银行工作。您是出纳员,负责与客户合作并分发资金。但是,有时您的抽屉里的钱会用完,因此您必须要求您的经理从金库中取回更多钱。现在,哪个经理为您取回现金并不重要。它可以是你的直属,他的老板,一直到公司的老板。您所关心的只是能够获得现金,以便您可以继续帮助客户。作为出纳员,您将定义一个包含如下方法的协议:func requestCash(amount: Int) -> Int?. 您还将有一个代表负责实施该方法,或者在我们的上下文中,他的工作是为您提供现金。现在,每当您的资金不足时,您就有办法获得更多。

因此,当您打卡开始作为出纳员的工作时,您需要您的经理有能力为您提供现金。假设他们雇佣了一个没有资历的新人来打开金库。好吧,他不会为你工作。当他说他将成为您当天的经理(或实施您的协议)时,您知道他实际上无法从金库中获取现金(不实施您的方法)。所以,你抱怨。因此,您看到的错误。

注意:您可以有可选的协议方法。这是完全有效的(在我们上面的示例中,它可能类似于func approveLoanRequest(loan: Loan) -> Bool- 您可以简单地要求客户在不同的日子回来以批准贷款请求,这在您的日常工作中不是必需的)。在这种情况下,如果方法未实现,则不会调用它们,并且具有协议的类如果未实现则不会抛出错误。

于 2016-01-14T21:47:22.303 回答