【问题标题】:Authenticate GameKit local player using swift使用 swift 对 GameKit 本地玩家进行身份验证
【发布时间】:2014-07-25 03:43:29
【问题描述】:

我希望将游戏迁移到 swift,我遇到的唯一问题是块/闭包。这是我不明白的语法,而在 Objective C 中我会使用:

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
    if (viewController != nil) {
        [self presentViewController:viewController animated:YES completion:nil];
    }
}

等等等等。但我不确定如何在 Swift 中做同样的事情。我知道这很简单,但我就是无法让它发挥作用,即使在阅读了 Swift 书籍并自己在谷歌上搜索答案之后也是如此。我只是一个业余程序员,所以我远非完美。

任何帮助将不胜感激。

【问题讨论】:

    标签: authentication block gamekit swift


    【解决方案1】:

    这就是你在 Swift 中的做法:

    var localPlayer = CGLocalPlayer.localPlayer()
    localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in
        //handle authentication
    }
    

    关于闭包的文档可以在here找到。

    【讨论】:

    • 感谢您的快速回答,我稍后再试。我一直在玩这样的东西,但因为没有自动完成提示,我以为我做错了什么。
    • 没问题。祝你好运!
    • 此方法现在已更改为从 Xcode 6 beta 6 开始的 authenticateHandler
    • 参数现在需要是可选的,{(viewController : UIViewController?, error : NSError?) -> Void in
    【解决方案2】:

    这是您在 Swift 中使用 Xcode 6.1 + 进行身份验证的方式:

        var localPlayer = GKLocalPlayer.localPlayer()
        localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in
            if ((viewController) != nil) {
                self.presentViewController(viewController, animated: true, completion: nil)
            }else{
    
                println((GKLocalPlayer.localPlayer().authenticated))
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多