There are cases where you forgot to set a value (so it\'s actually a bug), and running the program with forced unwrapping can crash the problem, and that can allow you to tr
Forced unwrapping (and I'm going to include force-casting as well) should only be used when you, as the programmer, know for a fact that an optional will never actually ever be nil
unless that nil
represents a clear bug in your code during development (and then you want it to crash).
There are many examples where this type of forced unwrapping is appropriate. Examples include:
UITableView dequeueReusableCell
(nil means you have a mistake in your storyboard).There are obviously many other cases where forced-unwrapping is appropriate but you must have a clear understanding of those cases.
But there are just as many runtime decisions that result in optionals that you can't guarantee and such cases should not be forced unwrapped.
Examples include:
nil
results.throw
or return optional results. Things can go wrong. Errors happen. Never assume you will get back a valid answer. Code defensively.In the end, a developer with the proper experience and understanding of how optionals work, what they mean, and when a value may or may not ever actually be nil
is in a position to safely use forced unwrapping when appropriate. Use it wisely.
Never use forced-unwrapping just because Xcode suggested it to make the compiler happy.