Swift 1.2 - >斯威夫特2

时间:2016-02-23 13:50:03

标签: ios swift

我正在为我的孩子编写一个应用程序。我有Java背景,但十年没有专业编码。我不完全理解以下行是如何工作的,但它在Swift 1.2中有效:

leaderboardRequest.loadScoresWithCompletionHandler({ (scores:[AnyObject]!, error:NSError!) -> Void in
            if (error != nil)
            {

我需要帮助将其转换为可用的Swift 2.0代码。有人可以发布以下方法的工作Swift 2.0代码的翻译:

func getHighscores(leaderboardID: String) {

    let leaderboardRequest = GKLeaderboard() as GKLeaderboard!
    leaderboardRequest.identifier = leaderboardID

    if leaderboardRequest != nil
    {
        leaderboardRequest.loadScoresWithCompletionHandler({ (scores:[AnyObject]!, error:NSError!) -> Void in
            if (error != nil)
            {
                //println("error in alltimeHighscoreForLevel")
                print(error.description)
                self.updateLocalHighscore()
            }
            else
            {
                if(leaderboardRequest != nil){
                    if(leaderboardRequest.scores != nil ) {
                        if(leaderboardRequest.scores!.count > 0){
                            self.updateHighestForLevel(leaderboardRequest)

                        }
                    }
                }
            }
        })
    }
}

2 个答案:

答案 0 :(得分:1)

我认为这对你有用:

leaderboardRequest.loadScoresWithCompletionHandler({ (scores, error) -> Void in
    if let error = error {
         // from here on your code should work

我认为loadScoresWithCompletionHandler的定义已从旧代码更改。

答案 1 :(得分:1)

解决此问题的两种常用方法:

  • 注释掉导致错误的行/方法并开始重新键入错误。代码完成将揭示该方法的正确签名。然后将旧行/方法中的相关代码复制并粘贴到新行/方法中,并解决潜在的错误/警告。

  • ⇧⌘0并在搜索字段中键入(或复制并粘贴)方法的开头,例如loadScoresWithCompletionHandler。这将带您进入文档,您可以看到整个声明,包括讨论。