6

Just a simple task, but I'm in trouble. Trying to make a different way but it fails.

enter image description here

How to init NSTimer with declared previously variable? Neither var nor let helps.

1

2 Answers 2

10

The initial value of a property (in your case: timer) cannot depend on another property of the class (in your case: interval).

Therefore you have to move the assigment timer = NSTimer(interval, ...) into a method of the class, e.g. into viewDidLoad. As a consequence, timer has to be defined as an optional or implicitly unwrapped optional.

Note also that Selector(...) takes a literal string as argument, not the method itself.

So this should work:

class ViewController: UIViewController { var interval : NSTimeInterval = 1.0 var timer : NSTimer! func timerRedraw() { } override func viewDidLoad() { super.viewDidLoad() timer = NSTimer(timeInterval: interval, target: self, selector: Selector("timerRedraw"), userInfo: nil, repeats: true) // ... } // Other methods ... } 
Sign up to request clarification or add additional context in comments.

Comments

0

Try:

var interval:NSTimeInterval = 1.0 var timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "timerRedraw:", userInfo: nil, repeats: true) 

pro-tip and hopefully an appreciated FYI: Swift functions should also start with lower case letters (i.e. "timerRedraw").

2 Comments

Unfortunately, it doesn't help. The same issue appears: interval not found
yeah, I forgot to note that you need to put your two variables into your "viewDidLoad" method. Which is exactly what the other guy answering correctly said. I gave him a +1 for that.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.