gpt4 book ai didi

ios - 删除处于无效状态的 GKTurnBasedMatch

转载 作者:IT王子 更新时间:2023-10-29 08:19:23 27 4
gpt4 key购买 nike

我正在做一些实验来尝试了解 GameKit,我制作了一个简单的游戏和一个列出我的玩家比赛的界面。我正在尝试添加在比赛中使用 removeWithCompletionHandler: 方法删除游戏的功能,但我无法删除似乎已进入无效状态的 GKTurnBasedMatch

问题匹配的 po 打印:

$0 = 0x1d590d20 <GKTurnBasedMatch 0x1d590d20 id:858d8257-cc49-4060-b1d8-38c09a929e3c status:Ended message: taken:2013-03-08 18:08:47 +0000 created:2013-03-08 03:24:14 +0000
current:<GKTurnBasedParticipant 0x1d58c020 - id:G:1717956303 (local player) status:Invited outcome:None lastTurn:(null)>
participants:
<GKTurnBasedParticipant 0x1d58bc90 - id:G:1717239488 status:Done outcome:Quit lastTurn:2013-03-08 18:08:47 +0000>
<GKTurnBasedParticipant 0x1d58c020 - id:G:1717956303 (local player) status:Invited outcome:None lastTurn:(null)>
>

这似乎表明比赛已经结束了。但是,其中一位参与者的结果是:无,我在文档的引导下认为这对于已结束的游戏是无效的。试图简单地删除游戏给出:

The requested operations could not be completed because one or more parameters are invalid.

在尝试设置结果和结束游戏时给出:

The requested operation could not be completed because the session is in an invalid state.

我想也许我不能删除游戏,因为本地玩家是积极的参与者,但是 participantQuitInTurnWithOutcome:...endTurnWithNextParticipants:... 都给错误:

The requested operation could not be completed because the session is in an invalid state.

还有。我是做错了什么还是以某种方式创建了一个无法移除的游戏?

附言我也无法通过 Game Center 提供的界面删除游戏,它们列在“游戏结束”部分下。

最佳答案

这就是我设法删除所有无效匹配项的方法。

我检查了当前参与者的状态,如果它被邀请,我调用 declineInviteWithCompletionHandler,否则我调用 participantQuitInTurnWithOutcome。

然后在两个完成 block 中,我调用了 removeWithCompletionHandler 来删除匹配项。

这产生了一些错误,但匹配项仍然被删除,所以我的列表是干净的。

这里有一个解决方法,可以避免一开始就进入这种状态。这样做的额外好处是,如果邀请者在完成他/她的第一轮之前退出,被邀请者甚至不会收到通知。

在playerQuitForMatch中,先结束回合,然后在completion handler中,立即退出比赛。像这样,

[match endTurnWithNextParticipants:[NSArray arrayWithObject:nextParticipant]
turnTimeout:GKTurnTimeoutDefault
matchData:nil completionHandler:^(NSError *error) {
if (error) {
NSLog(@"%@", error);
}

[match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit
withCompletionHandler:^(NSError *error) {
if (error) {
NSLog(@"%@" ,error);
}
}];
}];

关于ios - 删除处于无效状态的 GKTurnBasedMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15373903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com