<div dir="ltr">This is sort of weird right? because comparing nil to a non nil string is a reasonable thing to do:<div><br></div><div>var nilString:String? = nil</div><div><br></div><div>if nilString == &quot;this always fails&quot; {}</div><div><br></div><div>is totally reasonable.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 28, 2016 at 12:33 PM, Kevin Nattinger <span dir="ltr">&lt;<a href="mailto:swift@nattinger.net" target="_blank">swift@nattinger.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">No<div><br></div><div> <font face="Andale Mono"> 7&gt; switch str {<br>  8. case &quot;foo&quot;: print(&quot;case foo&quot;)<br>  9. case .none: print(&quot;(nil)&quot;)<br> 10. }<br>error: repl.swift:8:6: error: value of optional type &#39;String?&#39; not unwrapped; did you mean to use &#39;!&#39; or &#39;?&#39;?<br>case &quot;foo&quot;: print(&quot;case foo&quot;)<br>     ^<br>          !<br></font>Odd error, but at least it suggests it’s an issue with optionaity.<div><div class="h5"><br><br><blockquote type="cite">On Jun 28, 2016, at 9:27 AM, Nevin Brackett-Rozinsky &lt;<a href="mailto:nevin.brackettrozinsky@gmail.com" target="_blank">nevin.brackettrozinsky@gmail.com</a>&gt; wrote:<br><br>Does `case &quot;text&quot;?` work?<br><br><br>On Tuesday, June 28, 2016, Kevin Nattinger via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>Case .none:<br>Case .some(&quot;string&quot;):<br><br><br>On Jun 28, 2016, at 06:40, Lucas Jordan via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br><blockquote type="cite">Forgive me if this was/is discussed already, I am new to the process here....<br><br>(code is attached as a playground too)<br><br><br><br>Sometimes when I am working with a String? nil can be a reasonable value, and what I want to do is something like the following:<br><br>import UIKit<br><br><br><br>var str:String? = &quot;Hello, playground&quot;<br><br><br><br>switch str{<br><br>case nil:<br><br>    print(&quot;Nil!&quot;)<br><br>case &quot;Hello, playground&quot;:  //it would be super nice if this worked.<br><br>    print(&quot;Match&quot;)<br><br>default:<br><br>    print(&quot;Some other non nil value?&quot;)<br><br>}<br><br><br><br>But it does not work, the orange  text is a compile time error, &quot;Expression pattern of type &#39;String&#39; cannot match value of type &#39;String?&#39;. I realize that this can be replaced with a let statement (case let s where s == &quot;Hello, playground&quot;:), but that is verbose. <br><br>Seems like the compiler could be OK with the orange text, since it is clearly not nil.<br><br>Thoughts?<br><br>-Lucas<br><br><br><br><br><br></blockquote><blockquote type="cite">&lt;NilInSwitchStatements.playground.zip&gt;<br></blockquote><blockquote type="cite">_______________________________________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></blockquote></blockquote><br></div></div></div></div></blockquote></div><br></div>