在 Swift 2 中为 Game Center 保存高分
Saving a highscore for Game Center in Swift 2
我最近在下载 Xcode 7 beta 后迁移到 swift 2,我发现了 2 个错误,我使用 product>clean 修复了这些错误。我仍然遇到 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'
所以我尝试通过添加 scores: before scoreArray 来解决这个问题,如下所示:
GKScore.reportScores(scores: scoreArray, withCompletionHandler: {(error : NSError!) -> Void in
它给了我以下错误:
调用中参数 'withEligibleChallenges' 缺少参数
非常感谢您的帮助,并提前致谢
根据 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!
作为您的完成块参数。
我最近在下载 Xcode 7 beta 后迁移到 swift 2,我发现了 2 个错误,我使用 product>clean 修复了这些错误。我仍然遇到 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'
所以我尝试通过添加 scores: before scoreArray 来解决这个问题,如下所示:
GKScore.reportScores(scores: scoreArray, withCompletionHandler: {(error : NSError!) -> Void in
它给了我以下错误:
调用中参数 'withEligibleChallenges' 缺少参数
非常感谢您的帮助,并提前致谢
根据 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!
作为您的完成块参数。