这真的是一个简单的问题,但我无法解决它,我有以下完整代码
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,这是因为我正在访问没有值的东西,但在这种情况下,我该如何解决这个问题
答案 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 {
// ...
}
}