我一直在使用DaRkDOGs Easy Game Center代码(非常有用!)并添加了一个额外的类(如下所示)来发送“挑战朋友”请求。
public class func challengeFriendRequest(leaderboard: String, scoreValue : Int64, players: [GKPlayer]) {
guard EGC.isPlayerIdentified else {
EGCError.NotLogin.errorCall()
return
}
guard EGC.isConnectedToNetwork else {
EGCError.NoConnection.errorCall()
return
}
do {
let message : String? = "Try and beat this!"
let score = GKScore(leaderboardIdentifier: leaderboard)
score.value = scoreValue
let delegatVC = try EGC.sharedInstance.getDelegate()
var delegateParent:UIViewController? = delegatVC.parentViewController
if delegateParent == nil {
delegateParent = delegatVC
}
let controllerGKChallenge = score.challengeComposeControllerWithMessage(message, players: players, completionHandler: { (challengeVC, didChallenge, playersChallenged) -> Void in
if didChallenge {
print("\(playersChallenged!.count) players challenged")
}
delegateParent!.dismissViewControllerAnimated(true, completion: nil)
})
delegateParent!.presentViewController(controllerGKChallenge, animated: true, completion: nil)
} catch EGCError.NoDelegate {
EGCError.NoDelegate.errorCall()
} catch {
fatalError("Dont work\(error)")
}
}
游戏中心“挑战朋友”弹出窗口显示填充了正确的朋友和消息。我可以取消呼叫并控制返回应用程序。但是,如果我发送挑战,应用程序崩溃时会出现以下错误:
thread 1 exc_breakpoint(code = exc_arm_breakpoint,subcode = 0xe7ffdefe)。
在堆栈顶部,错误表明阵列强制转换问题:
“0_arrayForceCast A,B>([A]) - > [B]”。
我认为这可能与调用调用中使用的GKPlayers
数组有关,但我无法解决问题所在。
任何正确方向的指针都会很棒。
我正在测试我的应用程序在IOS 9.1部署目标上的IPad 2和iPhone 5s。