2014-06-26 16 views
-2

我是編程新手,在Xcode中遇到了Swift非常令人沮喪的問題 - 調試器阻止了我在模擬器中運行我的應用程序。當我點擊「運行」時,我會看到一個綠色欄,其中包含一條消息,無論我告訴調試器「繼續」多少次,模擬器仍爲黑色,綠色欄不會從該特定代碼行移動。Swift Debugger:如何禁用它以運行應用程序?

在我的應用程序委託的「類的AppDelegate」行我得到的消息:「線程1:信號SIGABRT」

什麼是這裏的調試器的意義呢?它似乎沒有幫助,只是阻止我看到我的代碼運行。我怎樣才能解決這個問題? 我的代碼:

//Initializing all imgs as variables: 


@IBOutlet var circle1: UIImageView! 
@IBOutlet var circle2: UIImageView! 
@IBOutlet var circle3: UIImageView! 
@IBOutlet var circle4: UIImageView! 
@IBOutlet var circle5: UIImageView! 
@IBOutlet var circle6: UIImageView! 
@IBOutlet var circle7: UIImageView! 
@IBOutlet var circle8: UIImageView! 
@IBOutlet var circle9: UIImageView! 

@IBOutlet var circleBtn1: UIButton! 
@IBOutlet var circleBtn2: UIButton! 
@IBOutlet var circleBtn3: UIButton! 
@IBOutlet var circleBtn4: UIButton! 
@IBOutlet var circleBtn5: UIButton! 
@IBOutlet var circleBtn6: UIButton! 
@IBOutlet var circleBtn7: UIButton! 
@IBOutlet var circleBtn8: UIButton! 
@IBOutlet var circleBtn9: UIButton! 

@IBOutlet var resetBtn: UIButton! 
@IBOutlet var ResultsLabel: UILabel! 

//Creating variables: 

var plays = Dictionary<Int,Int>() 
var done = false 
var aiDeciding = false 

//Function that says what to do if a UIButton is clicked: 

@IBAction func UIbuttonClicked(sender:UIButton) { 
    ResultsLabel.hidden = true 
    if !plays[sender.tag] && !aiDeciding && !done { 
    setImgforCircle(sender.tag, player:1) 

    } 

//Executing these functions: 

    checkforWin() 
    aiTurn() 

} 

//Function that says sets an X or O in the proper circle depending on player: 

func setImgforCircle(spot:Int, player:Int) { 
    var playerMark = player == 1 ? "Red_x" : "Red_o" 
    plays[spot] = player 
    switch spot { 
    case 1: 
     circle1.image = UIImage(named: playerMark) 
    case 2: 
     circle2.image = UIImage(named: playerMark) 
    case 3: 
     circle3.image = UIImage(named: playerMark) 
    case 4: 
     circle4.image = UIImage(named: playerMark) 
    case 5: 
     circle5.image = UIImage(named: playerMark) 
    case 6: 
     circle6.image = UIImage(named: playerMark) 
    case 7: 
     circle7.image = UIImage(named: playerMark) 
    case 8: 
     circle8.image = UIImage(named: playerMark) 
    case 9: 
     circle9.image = UIImage(named: playerMark) 

    default: 
     circle2.image = UIImage(named: playerMark) 
    } 

} 

//Function that sees if certain paths of circles have the same mark 

func checkforWin() { 
var whoWon = ["Lost":0, "Won":1] 
    for (key,value) in whoWon { 
     if ((plays[1] == value && plays[2] == value && plays[3] == value) || //across top row 
     (plays[4] == value && plays[5] == value && plays[6] == value) || //across middle row 
     (plays[7] == value && plays[8] == value && plays[9] == value) || //across bottom row 
     (plays[1] == value && plays[4] == value && plays[7] == value) || //down left column 
     (plays[2] == value && plays[5] == value && plays[8] == value) || //down middle column 
     (plays[3] == value && plays[6] == value && plays[9] == value) || //down right column 
     (plays[1] == value && plays[5] == value && plays[9] == value) || //diagonal going right 
     (plays[7] == value && plays[5] == value && plays[3] == value)) { //diagonal going left 

      ResultsLabel.hidden = false 
      ResultsLabel.text = "You \(key)!" 
      done = true 
     } 

    } 

} 
func aiTurn() { 

} 

func reset() { 
    plays = [:] 
    circle1.image = nil 
    circle2.image = nil 
    circle3.image = nil 
    circle4.image = nil 
    circle5.image = nil 
    circle6.image = nil 
    circle7.image = nil 
    circle8.image = nil 
    circle9.image = nil 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 
+4

「帶消息的綠色欄」?什麼信息?並且它很可能是您的代碼崩潰,因此無法移動 –

+0

在我的應用程序委託中的「class AppDelegate」行中,我收到消息:「線程1:信號SIGABRT」 – skyguy

+7

因此您的應用程序崩潰。現在你需要學習如何使用調試器來修復它 –

回答

1

我推薦雖然this指南。它有助於很多調試。當你看調試器時,通常可以找到問題的根源。信號SIGABRT通常是最容易調試的。

0

我自己也有這個問題。你可能會刪除ViewController文件中的某些內容,但並未刪除故事板和文件之間的連接。點擊here瞭解我如何解決問題的更多信息。

希望這可以幫助你,如果你仍然有問題。

相關問題