Swift2 GameCenter不工作,未显示身份验证和排行榜

Swift2 GameCenter不工作,未显示身份验证和排行榜,swift2,game-center,Swift2,Game Center,有了Swift 2,GameCenter就不适合我了。验证ViewController未显示。。。这是我的funcauthenticateLocalLayer(): 它每次都返回“未验证”,但不显示ViewController。任何解决方案?此解决方案使用Xcode 7.0中的Swift 2正确显示viewController 注意,在if语句开始之前,我已经更改了代码。我相信语法可能在最近的软件更新中发生了变化,因为我也遇到了这个问题 在我的应用程序中,我在GameViewController

有了Swift 2,GameCenter就不适合我了。验证ViewController未显示。。。这是我的func
authenticateLocalLayer()


它每次都返回“未验证”,但不显示ViewController。任何解决方案?

此解决方案使用Xcode 7.0中的Swift 2正确显示viewController

注意,在if语句开始之前,我已经更改了代码。我相信语法可能在最近的软件更新中发生了变化,因为我也遇到了这个问题

在我的应用程序中,我在GameViewController类的viewDidLoad()方法中调用了AuthenticateLocalLayer()

func authenticateLocalPlayer() {

    let localPlayer = GKLocalPlayer.localPlayer()
    localPlayer.authenticateHandler = {(viewController, error) -> Void in

        if (viewController != nil) {
            self.presentViewController(viewController!, animated: true, completion: nil)
        }

        else {
            print((GKLocalPlayer.localPlayer().authenticated))
        }
    }
}

如果您指定这是在设备中还是在模拟器中发生,这可能会有所帮助。此外,它是否仅在iOS 9设备/模拟器上运行时才会发生,还是在iOS 8上运行时也会发生?代码中的
self
是什么?UIViewController@AdamIt在设备和模拟器以及iOS 9和iOS 8中都会发生。抱歉没有澄清@NicolasMiari@parth不确定您为什么没有获得登录控制器,但您的
authenticateHandler
存在另一个问题。如果发生错误,您将收到带有nil
viewController的非nil
N错误
。由于您的代码没有检查
n错误
,因此它将假定nil VC表示播放器已通过身份验证,这将是错误的。
func authenticateLocalPlayer() {

    let localPlayer = GKLocalPlayer.localPlayer()
    localPlayer.authenticateHandler = {(viewController, error) -> Void in

        if (viewController != nil) {
            self.presentViewController(viewController!, animated: true, completion: nil)
        }

        else {
            print((GKLocalPlayer.localPlayer().authenticated))
        }
    }
}