+1

Sent from my iPhone

> On Aug 5, 2016, at 18:32, Charles Srstka via swift-evolution 
> <[email protected]> wrote:
> 
> MOTIVATION:
> 
> SE-0112 includes the CustomNSError protocol, which includes the properties 
> errorDomain, errorCode, and errorUserInfo. These properties can be used to 
> tell Swift how to convert an error to an NSError. However, there are no 
> default implementations for errorDomain and errorCode, and there is no way to 
> access the default values for _domain and _code that Error enums get in 
> Swift. Thus, even if all one wanted to do was to provide a value for 
> NSURLErrorKey, one has to do all this:
> 
> enum MyError: CustomNSError {
>    case foo(URL)
>    case bar(URL)
>    case baz(URL)
> 
>    static var errorDomain: String {
>        return “com.MyCompany.MyApp.MyError”
>    }
> 
>    var errorCode: Int {
>        switch self {
>        case .foo(_):
>            return 1
>        case .bar(_):
>            return 2
>        case .baz(_):
>            return 3
>        }
>    }
> 
>    var errorUserInfo: [String : NSObject] {
>        // construct the actual user info
>    }
> }
> 
> Notice how far down you have to read before you finally get to the part that 
> constructs the interesting information.
> 
> PROPROSED SOLUTION:
> 
> Add default implementations for all the properties in CustomNSError.
> 
> DETAILED DESIGN:
> 
> The implementations for errorCode and errorDomain will simply provide the 
> default values of _code and _domain already provided by Swift enums. The 
> default implementation for errorUserInfo will simply return an empty 
> dictionary.
> 
> This would allow the above enum to be written simply as:
> 
> enum MyError: CustomNSError {
>    case foo(URL)
>    case bar(URL)
>    case baz(URL)
> 
>    var errorUserInfo: [String : NSObject] {
>        // construct the actual user info
>    }
> }
> 
> and the frameworks would provide something appropriate for the domain and 
> code.
> 
> Charles
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to