2015-10-16 28 views
0

所以我是一個非常新的開發者,第一次剛剛啓動我的應用程序!很高興!這是我的錯誤,或者遊戲中心崩潰的錯誤

無論如何,我有最奇特的崩潰,我不能完全弄清楚。出於某種原因,今天30應用程序下載的應用程序,其中13個已經發生了這次崩潰,正好一次。由於某種原因,這隻會發生一次,這似乎只是球員第一次進入死亡場景。我無法找到設備,操作系統或任何隨機的關聯。

這裏是crashalytics報告:here

反正下面是正在發生的事情我已作了評論crashalytics認爲錯誤是發生

func saveHighscore(score:Int) -> Int 
    { 
     //authenticateLocalPlayer() 
     var temp:Int = -99 
     //var save:Int = -99 
     //check if user is signed in 
     if GKLocalPlayer.localPlayer().authenticated 
     { 

      var scoreReporter = GKScore(leaderboardIdentifier: "TerribleToothacheSP99") //leaderboard id here 
      scoreReporter.value = Int64(lscore) //score variable here (same as above) 
      var scoreArray: [GKScore] = [scoreReporter] 

      //save = scoreReporter.rank 
      GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError!) -> Void in 
       if error != nil { 
        //println("error") 
       } 


      }) 

      temp = lbread() 
      //temp = scoreReporter.rank 

     } 
     //return save 
     return temp 
    } 


var ttoout:Int = -99 
    func lbread() -> Int 
    { 
     var toout:Int = -99 
     let leaderBoardRequest = GKLeaderboard() 
     leaderBoardRequest.identifier = "TerribleToothacheSP99" 

     leaderBoardRequest.loadScoresWithCompletionHandler { (scores, error) -> Void in 
      //println("STUFF") 
      if (error != nil) { 
       //println("Error: \(error!.localizedDescription)") 
       self.ttoout = -99 
      } else if (scores != nil) { 
       let localPlayerScore = leaderBoardRequest.localPlayerScore 
       //println("Local player's score: \(localPlayerScore.rank)") 
       toout = localPlayerScore.rank 
       self.ttoout = localPlayerScore.rank 
      } 
      self.recievedScore() //Line 1017 THE CRASH HAPPENS HERE <<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     } 
     return toout 
    } 


func recievedScore() 
    { 
     if (ttoout == -99) 
     { 
      reportext2.text = "Go Online To See Global Ranking" 
      makeTextInOneLine(reportext2, size: width/1.2) 
     } 
     else 
     { 
      //ttoout = 99999999 
      reportext2.text = "Global Ranking: " + String(ttoout) 
      makeTextInOneLine(reportext2, size: width/1.2) 
     } 
    } 

func makeTextInOneLine(text: SKLabelNodePlus, size: CGFloat) // I am using SKLabelNode+ by maxKargin 
    { 
     //println(text.text) 

     text.drawLabel() 
     while(text.texture?.size().width > size) 
     { 
      text.fontSize -= 1 

      text.drawLabel() 

     } 

     text.drawLabel() 
    } 

如果您還有關於爲何有任何疑問行代碼中,我做些什麼,或者什麼變數意味着不要猶豫。非常感謝你看這個!

這是一些額外的代碼,包括什麼叫lbread。這可能不是必要的,所以你可能不需要閱讀它。

override func didMoveToView(view: SKView){ 

    rnk = saveHighscore(lscore.self) 
     if (GKLocalPlayer.localPlayer().authenticated == true) 
     { 
      reportext2.text = "Waiting for data from scoreboard" 
      makeTextInOneLine(reportext2, size: width/1.2) 
     } 
     else 
     { 
      reportext2.text = "Login to GameCenter to see ranking" 
      makeTextInOneLine(reportext2, size: width/1.2) 
     } 

     var phs = defaults.integerForKey("THighScore") 
     if (lscore.self > defaults.integerForKey("THighScore")) 
     { 
      //Current score is better then past one 
      defaults.setInteger(lscore.self, forKey: "THighScore") 
      hasover = true 
     } 
     else 
     { 
      //Past score is still reigning champ 
     } 
     saveHighscore2(defaults.integerForKey("THighScore")) 

    } 

func saveHighscore2(score:Int) 
    { 
     //authenticateLocalPlayer() 
     var temp:Int = -99 
     //var save:Int = -99 
     //check if user is signed in 
     if GKLocalPlayer.localPlayer().authenticated 
     { 

      var scoreReporter = GKScore(leaderboardIdentifier: "TerribleToothacheSP99") //leaderboard id here 
      scoreReporter.value = Int64(lscore) //score variable here (same as above) 
      var scoreArray: [GKScore] = [scoreReporter] 

      //save = scoreReporter.rank 
      GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError!) -> Void in 
       if error != nil { 
        //println("error") 
       } 


      }) 

      //temp = lbread() 
      //temp = scoreReporter.rank 

     } 
     //return save 
     //return temp 
    } 

回答

0

恭喜您的應用程序!

一個快速的回答將是你應該做在主線程的UI更新

dispatch_sync(dispatch_get_main_queue()) 
{ 
    //do UI updates here 
    self.recievedScore() 
}