+ 1

Plz any ios developer explain how optionals can work?

what is the use of ? and ! symbols, when and where and at what conditions ,shall i use those? read some net materials but no profit?any nice guy here?

24th Jun 2016, 1:44 PM
veeranarayana gutti
6 Answers
+ 3
? means that a variable may or may not have a value so if you are not sure that a variable may not have a value then you declare it with? else use!
7th Jul 2016, 7:11 PM
ravid15
+ 1
ok, optional is a key concept in swift and I too have limited understanding of it. here goes you use an optimal when you are not sure if the variable will have value. In case there is a chance that there can be no value(or a nil value) ALWAYS use optional. to declare a optional, you use a ? at the end of the type. this denotes that the variable is an optional and may have no value(nil). for eg, var favouriteMovie = String?
17th Jul 2016, 12:28 PM
Pink man
Pink man - avatar
+ 1
part 2 this means a parameter which is an optional string. it is an optional and its associated value is a string type. that was declaring an optional. now when you want to fetch the value of an optional parameter, you need to unwrap it. that is what ! does. remember if you unwrap an optional which is nil, your program will crash(which is good actually becuase you don't want your app to give wrong output, crash is better than incorrect output. it will crash becuase you are trying to extract a value when there is none. )
17th Jul 2016, 12:29 PM
Pink man
Pink man - avatar
+ 1
part 3 to prevent crashing use if let so for eg, to unwrap the above example, you will do if let favMovie = favouriteMovie! { whatever you want to execute if a favourite movie exists. } in this case, program will not crash. if there is no favouriteMovie(that is, it is nil), this block of code will not execute.
17th Jul 2016, 12:30 PM
Pink man
Pink man - avatar
+ 1
final part! however if you simply did let newFav = favouriteMovie! your program will crash if value of favouriteMovie is not set(nil) this part below is slightly more info and you may ignore this: optional values do not need an initial value, they are always initialised as nil. then there is implicit unwrapping of optionals. in that while declaring an optional itself you use ! what this does is, declare that variable as optional and when calling you don't have to unwrap using !, you can simply call the parameter and it will be unwrapped(because you unwrapped it while declaring itself. ) of course in case of a nil value it will crash again. so there, both ? and ! denote optional value and you use them to declare optional value depending upon the case sorry for long answer I wrote and realised can't write such long one in one post! hope this helped a bit
17th Jul 2016, 12:31 PM
Pink man
Pink man - avatar
+ 1
when you know a certain variable has a value and cant be nil you use ! and if you are uncertain and the variable may contain nil at some point in the program execution you use ?
16th Nov 2016, 1:23 AM
Nischal Aryal
Nischal Aryal - avatar