Now, the burning question: why does Swift need optionals? To understand this question, we should examine what problems optionals are designed to solve.
In most languages, it is possible to create a variable without giving it an initialized value. For example, in Objective-C, both of these lines of code are valid:
int i; MyObject *m;
Now, let's say that the MyObject class, written in Objective-C, has the following method:
-(int)myMethodWithValue:(int)i { return i*2; }
This method takes the value passed in from the i parameter, multiplies it by two, and returns the results. Let's try to call this method using the following code:
MyObject *m; NSLog(@"Value: %d",[m myMethodWithValue:5]);
Our first thought might be that this code would display Value: 10, since we are passing the value of 5 to a method that doubles...