2015-06-24 2 views
3

Недавно я перешел на быстрый 2 после загрузки Xcode 7 beta, и я обнаружил 2 ошибки, которые я исправил с помощью продукта> clean. Я все еще застрял с ошибками, связанными с Game Center.Below - это мой код для сохранения рекорда. (Если это помогает, этот код присутствует на два контроллеров зрения, с разницей в таблицах лидеров идентификаторов и оценке переменных)Сохранение рекорда для Game Center в Swift 2

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)> Пустота!)': перед тем scoreArray следующим образом:

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

И это дает мне следующую ошибку:

Отсутствует аргумент для параметра «withEligibleChallenges» в вызове

Помощь будет высоко оценен и спасибо заранее

ответ

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! в качестве параметра блока завершения.

+0

Итак, как мне изменить этот код? – needshelp

+0

Вы можете просто изменить свой код с '(ошибка: NSError!) -> Void' to' error -> Void'. Альтернативно просто используйте сокращенный синтаксис $ 0. –

+0

Я исправил вызов функции, но в коде, где у меня «если ошибка =! Nil» теперь дает ошибку, потому что нет объявления об ошибке. Если я попробую ошибку: NSError говорит, что это неправильно. –