<div dir="ltr"><div>I think there&#39;s an API change here that isn&#39;t acknowledged, I was just trying to figure out what happened, and how I can investigate them in the future.</div><div><br></div><div>Maybe the answer is I can get lots of detail about Swift core changes, but what Apple does with the standard library is a little less transparent.</div><div><br></div><div>code:</div><div><br></div><div>    let start = calendar.components([.hour, .minute], from: Date(timeIntervalSince1970: TimeInterval(start/1000)))</div><div>    from  = Int64(( (start.hour ?? 0) * 3600 + (start.minute ?? 0) * 60) * 1000)</div><div><br></div><div>There are some minor signature changes accounted for by the lowercase enum and the param naming changes, that&#39;s expected.</div><div><br></div><div>Component usage now requires the ?? operator but didn&#39;t used to. The return value of calendar.components is a tuple with optional parts. In Swift 2.3, this wasn&#39;t so.</div><div><br></div><div>This could be a knock on effect from <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md">https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md</a>, which talks about dropping conformance to NilLiteralConvertible, except NSUndefinedDateComponent isn&#39;t mentioned as one of them and the topic is otherwise unrelated.</div><div><br></div><div>It also could be a consequence of <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0054-abolish-iuo.md">https://github.com/apple/swift-evolution/blob/master/proposals/0054-abolish-iuo.md</a> -- My functions can no longer return implicitly unwrapped optionals and perhaps that&#39;s how calendar.components was implemented.</div><div><div><p class=""><br></p></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 22, 2016 at 4:13 PM, Brent Royal-Gordon <span dir="ltr">&lt;<a href="mailto:brent@architechies.com" target="_blank">brent@architechies.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">&gt; I&#39;m now trying to find why, along with changing from NSCalendar to Calendar, the .components are optional. I can&#39;t find any mention of it, and I&#39;m not sure in what situation minutes or hours could be nil and how I should guard against it.<br>
<br>
In Objective-C, these properties can be `NSUndefinedDateComponent`. In Swift, that&#39;s represented as `nil` instead.<br>
<br>
Essentially, this happens when you don&#39;t request a particular date component—for instance, when you say `gregorian.components([.year, .month, .day], fromDate: date)`, `hours` and `minutes` will be `nil`. In Objective-C, they would have been `NSUndefinedDateComponent`.<br>
<span class=""><font color="#888888"><br>
--<br>
Brent Royal-Gordon<br>
Architechies<br>
<br>
</font></span></blockquote></div><br></div></div>