无法识别的选择器发送到实例0x7febbac0fc60

时间:2015-04-30 03:31:48

标签: swift xcode6

问题在于它表示有一个无法识别的选择器发送到实例 问题是,当我运行它时,viewDidLoad函数中的打印行仍然会打印。

这是我的代码。

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)))
}


}

如果有人可以提供帮助,我会非常感激。

1 个答案:

答案 0 :(得分:0)

创建计时器时,需要将其分配给var:

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

您需要将其更改为

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