Gamecenter 设置验证处理程序崩溃
Posted
技术标签:
【中文标题】Gamecenter 设置验证处理程序崩溃【英文标题】:Gamecenter setting authenticate handler crashes 【发布时间】:2018-06-21 05:10:13 【问题描述】: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)
这会在最后一行冻结 - as! (UIViewController?,错误?)-> 无效)
除此之外,堆栈跟踪中没有任何内容.. 只是冻结执行。这里发生了什么?
如何设置身份验证处理程序?
鼠标悬停:线程 1:EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)
【问题讨论】:
【参考方案1】:这是因为您声明了错误的处理程序并试图通过将其强制转换为 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,并自己仔细检查类型。
【讨论】:
以上是关于Gamecenter 设置验证处理程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
iOS6 上的 GKLocalPlayer 身份验证崩溃并出现模态转换错误
显示排行榜崩溃应用程序,因为不支持 showViewController
使用 Firebase 身份验证时应用程序崩溃,原因:“已配置默认应用程序。”