GameCenter - GKTurnBasedMatch.loadMatchesWithCompletionHandler返回nil数组

时间:2016-04-08 15:26:47

标签: ios iphone game-center gamekit gkturnbasedmatch

我为我的游戏设置了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")
    }
  }
}

第三种情况总是被击中,匹配数组是零。

我认为应该有比赛。我正在使用

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)

} 

2 个答案:

答案 0 :(得分:1)

最近似乎有很多人遇到过这种情况。不确定它是否相关,但引用的例子一直使用swift。基于How to list all available GKTurnBasedMatches for a player?,看起来只是创建排行榜将解决问题。

基于https://stackoverflow.com/a/34056115/1641444的主题,似乎有时游戏中心会变得恍惚,无论出于何种原因,创建排行榜/成就,甚至只是更改默认值,kick都会重新开始行动。

答案 1 :(得分:0)

两个星期后我遇到了同样的问题。从一秒到另一秒它正在工作,似乎这是一个问题@apple。什么都不做,再试一次:))