I would file a radar. The bang in the as! seems necessary because you're forcing a downcast. But you also want to include the ? to indicate it's a String type that may not have a value. This is different from (1) a String that will always have a value, and from (2) a generic type (AnyObject). I see String? as a very distinct, third option.
Swift's error codes are really, really bad sometimes. Treat the error message as the compiler saying "Duh... I don't understand!" and proceed from there. Patricks suggestion of optional binding is worth trying.
as!seems necessary because you're forcing a downcast. But you also want to include the?to indicate it's aStringtype that may not have a value. This is different from (1) aStringthat will always have a value, and from (2) a generic type (AnyObject). I seeString?as a very distinct, third option.