在Swift 2中为游戏中心保存高分•

时间:2015-06-24 00:50:44

标签: ios game-center xcode7 swift2 game-center-leaderboard

我最近在下载Xcode 7 beta后迁移到了swift 2,我发现了2个错误,我使用产品> clean修复了。我仍然遇到2个与Game Center相关的错误.Below是我保存高分的代码。 (如果有帮助,此代码出现在两个视图控制器上,排行榜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开头的行中,我收到以下错误:

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

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

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

它给了我以下错误:

缺少参数' withEligibleChallenges'在电话中

非常感谢帮助,并提前感谢您

1 个答案:

答案 0 :(得分:4)

根据prerelease documentation,方法签名已更改为:

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

这不同于old documentation所说的:

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

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

因此,您必须更改代码,使其不具有明确的error: NSError!作为完成块参数。