我最近在下载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'在电话中
非常感谢帮助,并提前感谢您
答案 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!
作为完成块参数。