Opcionais de downcasting em Swift: como? Digite ou como! Tipo?

Dado o seguinte em Swift: var optionalString: String? let dict = NSDictionary() Qual é a diferença prática entre as duas declarações a seguir: optionalString = dict.objectForKey("SomeKey") as? String vs optionalString = dict.objectForKey("SomeKey") as!