Downcasting opsional di Swift: as? Ketik, atau sebagai! Tipe?

Diberikan yang berikut di Swift: var optionalString: String? let dict = NSDictionary() Apa perbedaan praktis antara dua pernyataan berikut: optionalString = dict.objectForKey("SomeKey") as? String vs. optionalString = dict.objectForKey("SomeKey") as! String?