<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 16, 2017, at 5:37 PM, Itai Ferber &lt;<a href="mailto:iferber@apple.com" class="">iferber@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">


<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" class="">

<div class="">
<div style="font-family:sans-serif" class=""><div style="white-space:normal" class=""><p dir="auto" class="">On 16 Mar 2017, at 14:48, Matthew Johnson wrote:</p>

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px" class=""><p dir="auto" class="">Thank you again for bringing these great proposals forward!</p>
</blockquote><p dir="auto" class="">Thanks for reviewing it, and for your comments!</p>

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px" class=""><p dir="auto" class="">I only have a couple of questions about this proposal.</p><p dir="auto" class="">I noticed that the types in this proposal don’t conform to Encoder and Decoder.  Is the plan to have them to provide private conforming types to Codable types they are asked to encode or decode?</p>
</blockquote><p dir="auto" class="">Yes. This is because the top-level interface for encoding and decoding in JSON and plist is different from the intermediate interface that <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7" class="">Encoder</code> and <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7" class="">Decoder</code> offer. As such, the top-level types don’t conform to <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7" class="">Encoder</code> and <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7" class="">Decoder</code>, but vend out internal types which do.</p></div></div></div></div></blockquote>This makes sense. &nbsp;I was initially concerned about the meaning of mutating these values during encoding or decoding but it looks like that isn’t possible without some really nefarious code that passes a reference to the top-level encoder / decoder to an object that is getting encoded / decoded. &nbsp;What will you do if somebody actually does this? &nbsp;</div><div><blockquote type="cite" class=""><div class=""><div class=""><div style="font-family:sans-serif" class=""><div style="white-space:normal" class="">

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px" class=""><p dir="auto" class="">Why are the strategy and format properties readwrite instead of configured at initialization time?  Is the intent that the encoder / decoder can be re-used with a different configuration in a subsequent call to encode or decode?</p>
</blockquote><p dir="auto" class="">Yes. It’s also a mouthful to have them all as params in the constructor, especially if we add more options in the future.</p></div></div></div></div></blockquote>Taking them in an initializer would not need to be wordy - they could all specify default arguments.<br class=""><blockquote type="cite" class=""><div class=""><div class=""><div style="font-family:sans-serif" class=""><div style="white-space:normal" class="">

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px" class=""><p dir="auto" class="">Finally, I agree with Brent’s comments regarding errors.  I would prefer to see Foundation move away from NSError in favor of domain-specific error types.  That said, the comment that this is a broader discussion for Foundation and not something to change in this proposal is reasonable.  I hope Foundation will consider changing this in the future.</p>
</blockquote><p dir="auto" class="">Thanks for your understanding — we will keep these concerns in mind.</p>

<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px" class=""><p dir="auto" class="">Matthew</p>
</blockquote>
</div>
</div>
</div>

</div></blockquote></div><br class=""></body></html>