<html><head></head><body style="word-wrap:break-word"><div></div><div>


<title></title>



<div>
<style>
<![CDATA[
body{font-family:Helvetica,Arial;font-size:13px}
]]>
</style>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Recently I’ve been considering the lack of safety around array
indexes. Swift is designed with safety in mind, so this example
would not compile:</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
var myString: String? = “hello”</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
myString.append(“ world!”)</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
The string is optional, not guaranteed to exist, so the last line
requires a “!” to force-unwrap it.</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div id="bloop_customfont" style="margin:0px">
<div id="bloop_customfont" style="margin:0px">   
public func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -&gt; Int {</div>
<div id="bloop_customfont" style="margin:0px">   
    let section = self.sections[section]</div>
<div id="bloop_customfont" style="margin:0px">   
    </div>
<div id="bloop_customfont" style="margin:0px">   
    return section.items.count</div>
<div id="bloop_customfont" style="margin:0px">   
}</div>
<div id="bloop_customfont" style="margin:0px"><br></div>
<div id="bloop_customfont" style="margin:0px">In this example, we
could provide a section number that goes beyond the bounds of the
self.sections array, without any warning.</div>
<div id="bloop_customfont" style="margin:0px"><br></div>
<div id="bloop_customfont" style="margin:0px">My suggestion is
perhaps arrays should by default return an optional when given an
index, and of course they’d support forced-unwrapping too. So you
could then do this:</div>
<div id="bloop_customfont" style="margin:0px"><br></div>
<div id="bloop_customfont" style="margin:0px">    let
section = self.sections[section]</div>
<div id="bloop_customfont" style="margin:0px">    if
section == nil {</div>
<div id="bloop_customfont" style="margin:0px">   
    return 0</div>
<div id="bloop_customfont" style="margin:0px">    }
else {</div>
<div id="bloop_customfont" style="margin:0px">   
    return section!.items.count</div>
<div id="bloop_customfont" style="margin:0px">   
}</div>
<div id="bloop_customfont" style="margin:0px"><br></div>
<div id="bloop_customfont" style="margin:0px">Or you could do
this:</div>
<div id="bloop_customfont" style="margin:0px"><br></div>
<div id="bloop_customfont" style="margin:0px">    let
section = self.sections[section]!</div>
<div id="bloop_customfont" style="margin:0px"> 
  </div>
<div id="bloop_customfont" style="margin:0px">   
return section.items.count</div>
</div>
<div id="bloop_sign_1491894931246087936" class="bloop_sign"></div>
<div id="bloop_sign_1491894931246087936" class="bloop_sign">
<br></div>
<div id="bloop_sign_1491894931246087936" class="bloop_sign">Of
course this would be less convenient in a lot of cases, but this is
the 1 place where apps seem to encounter a crash, crashing for the
same reason that’s especially avoided across most of the rest of
Swift.</div>
</div>


</div></body></html>