3

我最近在下载 Xcode 7 beta 后迁移到了 swift 2,我发现我使用 product>clean 修复了 2 个错误。我仍然遇到 2 个与 Game Center 相关的错误。下面是我保存高分的代码。(如果有帮助,此代码存在于两个视图控制器上,但排行榜 id 和分数变量有所不同)

func saveHighscore(score:Int) {

    //check if user is signed in
    if GKLocalPlayer.localPlayer().authenticated {

        var scoreReporter = GKScore(leaderboardIdentifier: "ChineseWeather") //leaderboard id here

        scoreReporter.value = Int64(Score) //score variable here (same as above)

        var scoreArray: [GKScore] = [scoreReporter]

        GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError!) -> Void in
            if error != nil {
                print("error")
            }
        })

    }

}

在以 GKScore 开头的行中,我收到以下错误:

无法使用类型为“([GKScore],withCompletionHandler:(NSError!)-> Void)”的参数列表调用“reportScores”

所以我尝试通过在 scoreArray 之前添加分数来解决这个问题,如下所示:

GKScore.reportScores(scores: scoreArray, withCompletionHandler: {(error : NSError!) -> Void in

它给了我以下错误:

调用中缺少参数“withEligibleChallenges”的参数

帮助将不胜感激,并在此先感谢您

4

1 回答 1

4

根据预发布文档,方法签名已更改为:

class func reportScores(_ scores: [GKScore],
  withCompletionHandler completionHandler: ((NSError?) -> Void)?)

这与旧文档不同:

class func reportScores(_ scores: [AnyObject]!,
  withCompletionHandler completionHandler: ((NSError!) -> Void)!)

请注意对可选 NSError 参数的更改以及使整个处理程序可选。

因此,您必须更改代码以不使用显式error: NSError!作为完成块参数。

于 2015-06-24T02:25:02.050 回答