Xcode-beta (7A152u): Protocol extensions need to be able to provide default stores too.

Originator:owensd
Number:rdar://21844730 Date Originated:15-Jul-2015 03:57 PM
Status:Open Resolved:
Product:Developer Tools Product Version:Xcode-beta (7A152u)
Classification:Enhancement Reproducible:Always
 
Default implementations can be coded against the protocol, however, this still produces a bunch of potential copy/paste boiler plate for implementors of a protocol when dealing with properties. Extensions should be able to provide default implementations for those as well.

See Key Value Coding for a full example: http://owensd.io/2015/07/14/key-value-coding-in-swift.html

But basically, this code needs to be copied for every single implementor of KeyValueCodable:

struct Person : KeyValueCodable {
    var _kvcstore: Dictionary<String, Any> = [:]
}

In the general case, **every** implementation will use the exact same thing. This is bad for code maintenance and is just bad code duplication.

I would expect to be able to do this:

extension KeyValueCodable {
    var _kvcstore: Dictionary<String, Any> = [:]
}

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!