Опции понижающего преобразования в Swift: как? Типа, или как! Тип?

Учитывая следующее в Swift: var optionalString: String? let dict = NSDictionary() В чем практическая разница между следующими двумя утверждениями: optionalString = dict.objectForKey("SomeKey") as? String против optionalString = dict.objectForKey("SomeKey") as! String?...