[swift-evolution] [Update] Updates to SE-0166 and SE-0167

Pitiphong Phongpattranont pitiphong.p at me.com
Thu Jul 13 02:36:57 CDT 2017


Hi swift-evolution,

I have a few feedbacks on SE-0166 and SE-0167. I’m a library maintainer of a Swift library for my company. We’re a payment gateway service and have a wide range of support library in many programming languages (including Swift).

Here’re my feedbacks

1. The auto synthesized code from the Swift compiler is a great feature but I’m not sure if this is a bug. If I have a property of type Dictionary<String, Any>, the auto synthesize doesn’t work and I need to implement the init(from decoder:) method manually (with code like `metadata = try container.decodeIfPresent([String: Any].self, forKey: .metadata)`) I will report this as a bug on bugs.swift.org <http://bugs.swift.org/>
2. In JSONEncoder/Decoder, you can specify the date parsing behavior since there’re many ways to represent this. My thought is that that should apply to `DateComponents` too since there are also many ways to represent `DateComponent` e.g. the ISO8601 also has a spec for parsing the date or time which should map to `DateComponents` type in Swift. And since the DateComponents already conforms to the Decodable protocol so I cannot (and should not) override the system behavior so I need to do the decoding manually on every types that have a property of DateComponents type
3. Since Swift has an associated value enum while many others doesn’t have (including JavaScript which is the mother of JSON), I design our library to use the power of associated value enum as much as possible. This means that there are some types/properties those are built from a multiple properties of a JSON object.
For example: The status property of Charge is an enum which has a associated value case for `failure` status. So in my library it is built from the `status` and `failureMessage` properties in JSON. For now there is no simple or automatic way (auto synthesized code from Swift Compiler) to do this in Decodable. I need to implement it manually on every types those have this similar properties. And TBH I still don’t have any ideas on how to design the Decodable to support this feature.

Those are my feedbacks on SE-0166 and SE-0167 for now. I hope my feedbacks would help the Swift and Swift community

Best regards,
Pitiphong Phongpattranont

> Hi swift-evolution,
> 
> Over the course of the past few weeks, we’ve been gathering feedback
> about the outcome of
> [SE-0166](https://github.com/apple/swift-evolution/blob/master/proposals/0166-swift-archival-serialization.md)
> and
> [SE-0167](https://github.com/apple/swift-evolution/blob/master/proposals/0167-swift-encoders.md)
> (both internally and externally), and we gathered a collection of
> updates that we’re going to introduce to the proposals and to the
> implementation.
> 
> Attached is rendered HTML (I don’t want to make your mail clients
> unusable like last time!) that lays out what we’d like to do. We’re
> not looking to do a full review of these changes, but if you have
> feedback or questions, we’re happy to get responses here.
> 
> Please note that some of these features have already been implemented
> (the new error types, some of the optionality changes, collection
> conformances, etc.), but we are receptive to comments on all of it. The
> existing proposals will also be updated to incorporate these updates.
> 
> Thanks for all of your feedback!
> 
> — Itai
> 
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170713/ce464c64/attachment.html>


More information about the swift-evolution mailing list