Apple's new programming language language swift is a very safe language. It will try to make sure that your code is not going to crash. To do this swift provides a feature called optional type. This optional type will store wrapped value if present and nil if no value presents. That basically means any optional variable either contains a value or nil. Lets see deep into optional type. The Optional type is a enumerated value with two values nil and some value which are represented as below.
Optional Binding: We can use optional variable by unwrapping the value, so that there wont be any runtime error. To unwrap conditionally we have three options
In this case, someResult will be someValue if it has value and anotherValue if someValue is nil.
Chaining example:
Unconditional Unwrapping: If you are sure that optional has a value,then this unconditional unwrapping will be used by specifying forced unwrap operator (postfix !). The problem with this feature is, if the optional value is nil, you will get run time error or possibly your app may crash.
It is also possible to use chaining using postfix !.
Happy Swifting!!!
References:
Apple Doc
- Optional.none
- Optional.some(value)
let shortForm: Int? = Int("77") let longForm: Optional= Int("77")
Optional Binding: We can use optional variable by unwrapping the value, so that there wont be any runtime error. To unwrap conditionally we have three options
- if let
- gaurd let
- switch
if let someResult = someValue?.someMethod()?.someAnotherMethod() { print("Success") } else { print("failed") }Nil-Coalescing Operator: This will be used for the optional to set default value for the nil optional value. And this can be used by doubel question mark ??. This can be also used as chaining
let someResult = someValue?? anotherValue
In this case, someResult will be someValue if it has value and anotherValue if someValue is nil.
Chaining example:
let someResult = someValue?? anotherValue?? anotherValue1
Unconditional Unwrapping: If you are sure that optional has a value,then this unconditional unwrapping will be used by specifying forced unwrap operator (postfix !). The problem with this feature is, if the optional value is nil, you will get run time error or possibly your app may crash.
let number = Int("77")! print(number) // Prints "77"
It is also possible to use chaining using postfix !.
let isPNG = imagePaths["image"]!.hasSuffix(".png") print(isPNG) // Prints "true"
Happy Swifting!!!
References:
Apple Doc
No comments:
Post a Comment