致命错误,无法打开可选的无

时间:2014-08-18 18:13:52

标签: swift

这真的是一个简单的问题,但我无法解决它,我有以下完整代码

  var numberoftimer:Int = 0



func increment(){

        numberoftimer = numberoftimer + 1 //error is here,breakpoint,no error message

    if numberoftimer>4{
        falafel1.center = CGPointMake(200, 100)



    }


}



@IBOutlet var fryer:UIImageView
@IBOutlet var order : UILabel
var NumberOfFlafel:UInt32!

init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    // Custom initialization
}

override func viewDidLoad() {
    super.viewDidLoad()
    NumberOfFlafel = arc4random()%11
    if NumberOfFlafel<2{
        order.text = "make \(NumberOfFlafel) falafel"
    }
    order.text = "make \(NumberOfFlafel) falafels"








}

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
}


override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!) {
    let t = touches.anyObject() as UITouch

    if t.view == falafel1{
        let p = t.locationInView(self.view)

        falafel1.center = p




        if CGRectIntersectsRect(falafel1.frame, fryer.frame){
            falafel1.center = CGPointMake(385, 192)
            NSTimer.scheduledTimerWithTimeInterval(1 , target: self, selector: "increment", userInfo: nil, repeats: true)

        }

        }

这给了我一个运行时错误,说不能打开可选的none,这是因为我正在访问没有值的东西,但在这种情况下,我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

var num: Int?

声明一个可选变量,该变量自动初始化为nil(又名可选无),表示 一个“缺失”的价值。因此

num = num! + 1

在运行时崩溃,因为没有为变量赋值。

在您的情况下似乎没有必要使用可选项,因此您应将其声明为

var num: Int = 0 // integer variable with initial value zero

并删除方法中的“展开”运算符!

func function() {
    num = num + 1 // Or simply: ++num
    if num > 5 {
        // ...
    }
}