[swift-evolution] [Proposal draft] NSError bridging

Douglas Gregor dgregor at apple.com
Thu Jun 30 12:44:38 CDT 2016


> On Jun 30, 2016, at 2:19 AM, Brent Royal-Gordon <brent at architechies.com> wrote:
> 
>> Note that, unlike with NSError, the provided errorUserInfo requires String keys.
> 
> Is there any way this could be tightened further to require Error.UserInfoKey keys (where Error.UserInfoKey is a Notification.Name-style wrapper)?


Maybe. We had originally tried doing this, but it caused a lot of frustration because NSError’s userInfo historically allowed non-string keys, so technically it should be typed as [NSObject : AnyObject]. However, that type signature means that one is “.rawValue”’ing all of the keys over and over:

	  userInfo[NSErrorUserInfoKey.myKeyName.rawValue] = foo

That said, this proposal eliminates the need for using those keys (and, indeed, NSError) most of the time, and maybe we can write off non-string keys entirely in Swift.

	- Doug



More information about the swift-evolution mailing list