Gamecenter设置验证处理程序崩溃

时间:2018-06-21 05:10:13

标签: ios swift3 game-center game-center-leaderboard

func authenticateLocalPlayer(player: GKLocalPlayer) {
        player.authenticateHandler =
            ({ (viewController : UIViewController!, error : NSError!) -> Void in
                if viewController != nil {
                    self.present(viewController, animated:true, completion: nil)
                } else {

                }
                } as! (UIViewController?, Error?) -> Void)

    }

这冻结在最后一行上-如! (UIViewController吗?,错误?)->无效)

在堆栈跟踪中没有任何内容..只会冻结执行。这是怎么回事?

如何设置身份验证处理程序?

冻结的鼠标悬停:线程1:EXC_BREAKPOINT(代码= EXC_ARM_BREAKPOINT,子代码= 0xe7ffdefe)

1 个答案:

答案 0 :(得分:3)

这是因为您声明了错误的处理程序,并试图通过强制将其强制投射到as! (UIViewController?, Error?) -> Void来进行修复,但由于这些类型不同,因此显然会失败。

那应该是这样的:

player.authenticateHandler =
        ({ (viewController : UIViewController?, error : Error?) -> Void in
            if let vc = viewController {
                self.present(vc, animated:true, completion: nil)
            } else {

            }
        })

确保您对Xcode的信任度不是很高,请自己仔细检查类型。