То, что вы называете «принудительным разворачиванием» известен как "неявно развернутые по желанию. Неявно развернутый необязательный параметр обычно используется в объектах, которые не могут или не будут присваивать значение свойства во время инициализации, но можно ожидать, что он всегда будет возвращать ненулевое значение при его использовании. Использование неявно развернутого необязательно снижает безопасность кода, поскольку его значение не может быть проверено до выполнения, но позволяет пропускать разворачивание свойства каждый раз, когда оно используется. Например:
var a: Int!
var b: Int?
var c = a + b //won't compile
var d = a + b! //will compile, but will throw an error during runtime
var e = a + a //will compile, but will throw an error during runtime
a = 1
b = 2
var f = a + b //still won't compile
var g = a + b! //will compile, won't throw an error
var h = a + a //will compile, won't throw an error
Вообще говоря, вы всегда должны использовать опции, если вы не присваиваете значение переменной при инициализации. Это уменьшит сбои программ из-за ошибок программиста и сделает ваш код более безопасным.