Opcionales Downcasting en Swift: ¿como? Escriba, o como! ¿Tipo?

Dado lo siguiente en Swift: var optionalString: String? let dict = NSDictionary() ¿Cuál es la diferencia práctica entre las siguientes dos declaraciones: optionalString = dict.objectForKey("SomeKey") as? String vs optionalString = dict.objectForKey("SomeKey") as!