[swift-evolution] [Review] SE-0112: Improved NSError Bridging
Ben Rimmington
me at benrimmington.com
Tue Jul 5 19:00:38 CDT 2016
<https://github.com/apple/swift-evolution/blob/master/proposals/0112-nserror-bridging.md>
The new protocols could be combined into a single CustomNSError protocol.
This would mirror the NSError class APIs, which are being customized.
Instead of using NSError.setUserInfoValueProvider(forDomain:provider:)
could you wrap the CustomNSError value inside an NSError subclass?
class _CustomNSError: NSError {
private let _error: CustomNSError
init(_error: CustomNSError) {
self._error = _error
super.init(
domain: _error.dynamicType.errorDomain,
code: _error.errorCode,
userInfo: _error.errorUserInfo)
}
override var localizedDescription: String {
return _error.errorDescription ?? super.localizedDescription
}
override var localizedFailureReason: String? {
return _error.failureReason ?? super.localizedFailureReason
}
override var localizedRecoverySuggestion: String? {
return _error.recoverySuggestion ?? super.localizedRecoverySuggestion
}
override var localizedRecoveryOptions: [String]? {
return _error.recoveryOptions ?? super.localizedRecoveryOptions
}
override var recoveryAttempter: AnyObject? {
if _error.recoveryOptions != nil {
return _NSErrorRecoveryAttempter(error: _error)
} else {
return super.recoveryAttempter
}
}
override var helpAnchor: String? {
return _error.helpAnchor ?? super.helpAnchor
}
}
-- Ben
More information about the swift-evolution
mailing list