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)
答案 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的信任度不是很高,请自己仔细检查类型。