2015-04-30 3 views
0

Проблема заключается в том, что в нем говорится, что есть непризнанный селектор, отправленный экземпляру.
Проблема заключается в том, что при ее запуске печатаются строки в функции viewDidLoad.непризнанный селектор, отправленный в экземпляр 0x7febbac0fc60

Вот мой код.

import Foundation 
import UIKit 

class MathSubtract : UIViewController, UITextFieldDelegate { 

@IBOutlet weak var firstNumber: UILabel! 
@IBOutlet weak var secondNumber: UILabel! 
@IBOutlet weak var operation: UILabel! 
@IBOutlet weak var timerLabel: UILabel! 
@IBOutlet weak var score: UILabel! 
@IBOutlet weak var answer: UITextField! 
@IBOutlet weak var enter: UIButton! 
@IBOutlet weak var Solution: UIImageView! 
@IBOutlet weak var ScoreLabel: UILabel! 
@IBOutlet weak var saysTime: UILabel! 
@IBOutlet weak var questionLabel: UILabel! 
@IBOutlet weak var question: UILabel! 
@IBOutlet weak var options: UIButton! 
@IBOutlet weak var end: UIButton! 


let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults() 
let levelStuff: NSUserDefaults = NSUserDefaults.standardUserDefaults() 

var randone = 0 
var randtwo = 0 
var OP = 0 

var Answer = 0 

var correct = 0 
var wrong = 0 
var total = 1 
var high = 0 

var practice = false 
var test = false 
var pass = false 
var level = 1 

var timerCount = Int() 
var timerRunning = false 
var timer = NSTimer() 
var timePlaceHold = 0 

var numbers:[String] = ["0","1","2","3","4","5","6","7","8","9"] 
var operations:[String] = ["plus","minus"] 
var result:[String] = ["right","wrong"] 



func Counting(){ 
    if(practice){ 
     timerCount++ 
    } 
    else if(test){ 
     timerCount -= 1 
    } 
    if(test && correct>=4 && timerCount<=0){ 
     println("2") 
     level++ 
     pass = true 
    } 
    timerLabel.text = "\(timerCount)" 

    if(timerCount<=0 && test){ 
     answer.resignFirstResponder() 
     timer.invalidate() 
     timerRunning = false 
     firstNumber.hidden = true 
     secondNumber.hidden = true 
     timerLabel.hidden = true 
     operation.hidden = true 
     answer.hidden = true 
     enter.hidden = true 
     score.hidden = true 
     Solution.hidden = true 
     ScoreLabel.hidden = true 
     saysTime.hidden = true 
     options.hidden = true 
     question.hidden = true 
     questionLabel.hidden = true 
     end.hidden = false 
     NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("nextPage"), userInfo: nil, repeats: false) 
    } 

} 

func nextPage(){ 
    self.performSegueWithIdentifier("timesUpSubtract", sender: self) 
} 


override func viewDidLoad() { 
    print(test) 
    println(" in MathSubtract") 
    if(practice){ 
     timerCount = 0 
     question.text = "\(total)" + "/20" 
    } 
    else if(test){ 
     question.text = "\(total)" 
     timerCount = 15 
    } 
    end.hidden = true 
    timerLabel.text = "\(timerCount)" 
    score.text = "\(correct)" 
    timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("Counting"), userInfo: nil, repeats: true) 
    timerRunning = true 

    if(level==1){ 
     randone = randomInt(0, max: 9) 
     randtwo = randomInt(0, max: randone) 
    } 
    else if(level==2){ 
     randone = randomInt(10, max: 19) 
     randtwo = randomInt(0, max: 9) 
    } 
    else if(level==3){ 
     randone = randomInt(10, max: 19) 
     randtwo = randomInt(10, max: randone) 
    } 
    else if(level==4){ 
     randone = randomInt(20, max: 29) 
     randtwo = randomInt(10, max: 19) 
    } 
    else if(level==5){ 
     randone = randomInt(20, max: 29) 
     randtwo = randomInt(20, max: randone) 
    } 
    else if(level==6){ 
     randone = randomInt(30, max: 39) 
     randtwo = randomInt(20, max: 29) 
    } 
    else if(level==7){ 
     randone = randomInt(30, max: 39) 
     randtwo = randomInt(30, max: randone) 
    } 

    secondNumber.text = "\(randtwo)" 
    firstNumber.text = "\(randone)" 
    operation.text = "-" 
    operation.font = UIFont(name: operation.font.fontName, size: 90) 


    //  randone = Int(arc4random_uniform(10)) 
    //  randtwo = Int(arc4random_uniform(10)) 
    //  OP = Int(arc4random_uniform(2)) 
    //  self.secondNumber.image = UIImage(named: self.numbers[randtwo]) 
    //  self.firstNumber.image = UIImage(named: self.numbers[randone]) 
    //  self.operation.image = UIImage(named: self.operations[OP]) 


} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

@IBAction func txtClear(sender: UITextField) { 
    answer.text = "" 
} 


@IBAction func submitted(sender: AnyObject) { 
    if ((timerCount > 0 && test) || (total<20 && practice)) { 

     Answer = randone - randtwo 

     if(answer.text.toInt() != Answer){ 
      self.Solution.image = UIImage(named: self.result[1]) 
      wrong++ 
     } 
     else{ 
      self.Solution.image = UIImage(named: self.result[0]) 
      correct++ 
      score.text = "\(correct)" 
     } 
     total++ 

     if(level==1){ 
      randone = randomInt(0, max: 9) 
      randtwo = randomInt(0, max: randone) 
     } 
     else if(level==2){ 
      randone = randomInt(10, max: 19) 
      randtwo = randomInt(0, max: 9) 
     } 
     else if(level==3){ 
      randone = randomInt(10, max: 19) 
      randtwo = randomInt(10, max: randone) 
     } 
     else if(level==4){ 
      randone = randomInt(20, max: 29) 
      randtwo = randomInt(10, max: 19) 
     } 
     else if(level==5){ 
      randone = randomInt(20, max: 29) 
      randtwo = randomInt(20, max: randone) 
     } 
     else if(level==6){ 
      randone = randomInt(30, max: 39) 
      randtwo = randomInt(20, max: 29) 
     } 
     else if(level==7){ 
      randone = randomInt(30, max: 39) 
      randtwo = randomInt(30, max: randone) 
     } 

     self.secondNumber.text = "\(randtwo)" 
     self.firstNumber.text = "\(randone)" 
    } 

    if(test && correct>=4 && timerCount<=0){ 
     level++ 
     pass = true 
    } 
    if(practice){ 
     question.text = "\(total)" + "/20" 
    } 
    if(test){ 
     question.text = "\(total)" 
    } 
    txtClear(answer) 

    if(correct>high){ 
     high = correct 

    } 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)  { 

    if let highCheck = defaults.valueForKey("highScoreSubtract") as? String{ 

     if(high > highCheck.toInt()){ 
      defaults.setObject("\(high)", forKey: "highScoreSubtract") 
      defaults.synchronize() 
     } 
    } 
    else{ 
     defaults.setObject("\(high)", forKey: "highScoreSubtract") 
     defaults.synchronize() 
    } 

    var myStringH = defaults.valueForKey("highScoreSubtract") as? String 
    let x : Int = total 
    var myStringT = String(x) 
    let y : Int = wrong 
    var myStringW = String(y) 
    let z : Int = correct 
    var myStringC = String(z) 

    if (segue.destinationViewController.isKindOfClass(OverSubtract)) { 
     if(pass){ 
      levelStuff.setObject("\(level)", forKey: "level") 
      levelStuff.synchronize() 
     } 
     var DestViewController : OverSubtract = segue.destinationViewController as OverSubtract 
     DestViewController.HSText = myStringH! 
     DestViewController.totalText = myStringT 
     DestViewController.wrongText = myStringW 
     DestViewController.correctText = myStringC 
     DestViewController.practice = practice 
     DestViewController.test = test 
     DestViewController.level = level 
     if(correct>=4){ 
      DestViewController.advance = true 
     } 

    } 
    else if (segue.destinationViewController.isKindOfClass(OptionsSubtract)) { 
     timer.invalidate() 
     var DestViewController : OptionsSubtract = segue.destinationViewController as OptionsSubtract 

     DestViewController.TimerPlaceHolder = timerCount 
     DestViewController.ScorePLaceHolder = correct 
     DestViewController.WrongPlaceHolder = wrong 
     DestViewController.TotalPlaceHolder = total 
     DestViewController.HSPlaceHolder = high 
     DestViewController.level = level 

    } 
} 

func randomInt(min: Int, max:Int) -> Int { 
    return min + Int(arc4random_uniform(UInt32(max - min + 1))) 
} 


} 

Если кто-нибудь может помочь, я буду вам очень признателен.

+0

Пожалуйста, удалите ненужную код и скажите нам, какая строка вызывает ошибку. – Eendje

+0

idk, строка которого вызвала ошибку. он сказал, что непризнанный селектор отправлен в экземпляр 0x7febbac0fc60. – DavosSnow

+0

Есть ли способ узнать, какая переменная 0x7febbac0fc60? – DavosSnow

ответ

0

При создании таймера необходимо присвоить его вар:

NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("nextPage"), userInfo: nil, repeats: false) 

Вы должны изменить его

timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "nextPage", userInfo: nil, repeats: false) 
Смежные вопросы