When we declare variables in Swift, they are, by default, nonoptional, which means that they must contain a valid, non-nil value. If we try to set a nonoptional to nil, it will result in a Type '{type}' does not conform to protocol 'NilLiteralConvertible'
error, where {type}
is the type of the variable. For example, the following code will throw a Type 'String' does not conform to protocol 'NilLiteralConvertible'
error when we attempt to set the message
variable to nil
because message is a non-optional type:
var message: String = "My String" message = nil
It is very important to understand that nil in Swift is very different from nil in Objective-C. In Objective-C, nil is a pointer to nonexistent objects; however, in Swift, nil is the absence of a value. This concept is very important to fully understand optionals in Swift.
A variable defined as an optional can contain a valid value, or it can indicate an absence of a value. We indicate an absence of a value by assigning...