1

我为我的游戏设置了 GameCenter 回合制比赛。现在我只是想显示当前 GK 玩家的当前比赛列表。

这是我的代码:

  GKTurnBasedMatch.loadMatchesWithCompletionHandler { (matchesOpt, errorOpt) in

    if let error = errorOpt {
      print("Error loading matches: \(error.localizedDescription)")
    } else if let matches = matchesOpt {
      self.matches = matches
      self.gamesTableView.reloadData()
    } else {
      print("Matches array is nil")
    }
  }
}

第三种情况总是命中,matches 数组为 nil。

我认为应该有比赛。我在用着

GKTurnBasedMatch.findMatchForRequest 

开始比赛,并且成功。此外,如果我从 findMatchForRequest 中记下匹配的 matchId,然后我调用

GKTurnBasedMatch.loadMatchWithID(matchId)

它使用正确的匹配数据和所有内容找到匹配项。

有谁知道我如何让 loadMatchesWithCompletionHandler 返回可以通过 id 检索的相同游戏?

编辑:这是验证码:

GKLocalPlayer.localPlayer().authenticateHandler = { (viewControllerOpt, errorOpt) in

  NSLog("GK local player authentication finished. Error: \(errorOpt)")
  if let viewController = viewControllerOpt {
    self.presentViewController(viewController, animated: true, completion: nil)
  }

  GKLocalPlayer.localPlayer().registerListener(self)

} 
4

1 回答 1

1

最近似乎有很多人遇到过这种情况。不确定它是否相关,但引用的示例一直使用 swift。基于如何为玩家列出所有可用的 GKTurnBasedMatches?看起来只需创建一个排行榜就可以解决问题。

根据https://stackoverflow.com/a/34056115/1641444上的线程,似乎有时 Game Center 会被惊呆,无论出于何种原因,创建排行榜/成就,甚至只是更改默认值,将其重新启动付诸行动。

于 2016-05-19T17:05:10.073 回答