make gitbook

This commit is contained in:
numbbbbb
2014-06-14 00:20:09 +08:00
parent 75ad5ed45d
commit 599a880321
41 changed files with 119 additions and 119 deletions

View File

@ -46,7 +46,7 @@
<div class="book" data-level="1.1" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="1.1" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_393">
<section class="normal" id="section-gitbook_4">
<blockquote>
<p>翻译numbbbbb</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="1.2" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="1.2" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_395">
<section class="normal" id="section-gitbook_6">
<blockquote>
<p>翻译numbbbbb

View File

@ -46,7 +46,7 @@
<div class="book" data-level="1" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="1" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_397">
<section class="normal" id="section-gitbook_8">
<h1 id="-swift">欢迎使用 Swift</h1>
<p>在本章中您将了解 Swift 的特性和开发历史,并对 Swift 有一个初步的了解。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.1" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.1" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_400">
<section class="normal" id="section-gitbook_15">
<blockquote>
<p>翻译numbbbbb, lyuka, JaySurplus</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.2" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.2" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_421">
<section class="normal" id="section-gitbook_32">
<blockquote>
<p>翻译xielingwang</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.3" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.3" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_402">
<section class="normal" id="section-gitbook_11">
<blockquote>
<p>翻译wh1100717</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.4" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.4" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_404">
<section class="normal" id="section-gitbook_13">
<blockquote>
<p>翻译zqp</p>
@ -821,7 +821,7 @@ let airportNames = Array(airports.values)
<p>我们可以像数组一样使用构造语法创建一个空字典:</p>
<pre><code>var namesOfIntegers = Dictionary&lt;Int, String&gt;()
// namesOfIntegers 是一个空的 Dictionary&lt;Int, String&gt;
</code></pre><p>这个例子创建了一个<code>Int, String</code>类型的空字典来储存英语对整数的命名。的键是<code>Int</code>型,值是<code>String</code>型。</p>
</code></pre><p>这个例子创建了一个<code>Int, String</code>类型的空字典来储存英语对整数的命名。的键是<code>Int</code>型,值是<code>String</code>型。</p>
<p>如果上下文已经提供了信息类型,我们可以使用空字典字面语句来创建一个空字典,记作<code>[:]</code>(中括号中放一个冒号):</p>
<pre><code>namesOfIntegers[16] = &quot;sixteen&quot;
// namesOfIntegers 现在包含一个键值对

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.5" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.5" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_406">
<section class="normal" id="section-gitbook_17">
<blockquote>
<p>翻译vclwei, coverxit, NicePiao</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.6" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.6" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_408">
<section class="normal" id="section-gitbook_19">
<blockquote>
<p>翻译honghaoz</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.7" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.7" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_410">
<section class="normal" id="section-gitbook_21">
<blockquote>
<p>翻译wh1100717</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.8" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.8" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_412">
<section class="normal" id="section-gitbook_23">
<blockquote>
<p>翻译yankuangshi</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.9" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.9" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_414">
<section class="normal" id="section-gitbook_25">
<blockquote>
<p>翻译JaySurplus</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.10" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.10" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_415">
<section class="normal" id="section-gitbook_26">
<blockquote>
<p>翻译shinyzhu</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.11" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.11" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_417">
<section class="normal" id="section-gitbook_28">
<blockquote>
<p>翻译pp-prog</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.12" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.12" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_419">
<section class="normal" id="section-gitbook_30">
<blockquote>
<p>翻译siemenliu</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.13" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.13" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_398">
<section class="normal" id="section-gitbook_9">
<blockquote>
<p>翻译Hawstein</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.14" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.14" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_423">
<section class="normal" id="section-gitbook_34">
<blockquote>
<p>翻译lifedim</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.15" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.15" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_425">
<section class="normal" id="section-gitbook_36">
<blockquote>
<p>翻译bruce0505</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.16" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.16" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_427">
<section class="normal" id="section-gitbook_38">
<blockquote>
<p>翻译TimothyYe</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.17" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.17" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_429">
<section class="normal" id="section-gitbook_40">
<blockquote>
<p>翻译Jasonbroker</p>
@ -603,16 +603,16 @@
<li><a href="#calling_methods_through_optional_chaining">通过可选链调用方法</a></li>
<li><a href="#calling_subscripts_through_optional_chaining">使用可选链调用子脚本</a></li>
<li><a href="#linking_multiple_levels_of_chaining">连接多层链接</a></li>
<li><a href="#chaining_on_methods_with_optional_return_values">链接自判断返回值的方法</a></li>
<li><a href="#chaining_on_methods_with_optional_return_values">链接可选返回值的方法</a></li>
</ul>
<p>可选链Optional Chaining是一种可以请求和调用属性、方法及子脚本的过程它的自判断性体现于请求或调用的目标当前可能为空(<code>nil</code>)。如果自判断的目标有值,那么调用就会成功;相反,如果选择的目标为空(<code>nil</code>),则这种调用将返回空(<code>nil</code>)。多次请求或调用可以被链接在一起形成一个链,如果任何一个节点为空(<code>nil</code>)将导致整个链失效。</p>
<p>可选链Optional Chaining是一种可以请求和调用属性、方法及子脚本的过程它的可选性体现于请求或调用的目标当前可能为空(<code>nil</code>)。如果可选的目标有值,那么调用就会成功;相反,如果选择的目标为空(<code>nil</code>),则这种调用将返回空(<code>nil</code>)。多次请求或调用可以被链接在一起形成一个链,如果任何一个节点为空(<code>nil</code>)将导致整个链失效。</p>
<blockquote>
<p>注意:
Swift 的自判断链和 Objective-C 中的消息为空有些相像,但是 Swift 可以使用在任意类型中,并且失败与否可以被检测到。</p>
Swift 的可选链和 Objective-C 中的消息为空有些相像,但是 Swift 可以使用在任意类型中,并且失败与否可以被检测到。</p>
</blockquote>
<p><a name="optional_chaining_as_an_alternative_to_forced_unwrapping"></a></p>
<h2 id="-">可选链可替代强制解析</h2>
<p>通过在想调用的属性、方法、或子脚本的可选值(<code>optional value</code>)(非空)后面放一个问号,可以定义一个可选链。这一点很像在可选值后面放一个声明符号来强制拆得其封包内的值。他们的主要的区别在于当可选值为空时可选链即刻失败,然而一般的强制解析将会引发运行时错误。</p>
<p>通过在想调用的属性、方法、或子脚本的可选值(<code>optional value</code>)(非空)后面放一个问号,可以定义一个可选链。这一点很像在可选值后面放一个号来强制拆得其封包内的值。他们的主要的区别在于当可选值为空时可选链即刻失败,然而一般的强制解析将会引发运行时错误。</p>
<p>为了反映可选链可以调用空(<code>nil</code>不论你调用的属性、方法、子脚本等返回的值是不是可选值它的返回结果都是一个可选值。你可以利用这个返回值来检测你的可选链是否调用成功有返回值即成功返回nil则失败。</p>
<p>调用可选链的返回结果与原本的返回结果具有相同的类型,但是原本的返回结果被包装成了一个可选值,当可选链调用成功时,一个应该返回<code>Int</code>的属性将会返回<code>Int?</code></p>
<p>下面几段代码将解释可选链和强制解析的不同。</p>
@ -624,8 +624,8 @@ Swift 的自判断链和 Objective-C 中的消息为空有些相像,但是 Swi
class Residence {
var numberOfRooms = 1
}
</code></pre><p><code>Residence</code>具有一个<code>Int</code>类型的<code>numberOfRooms</code>,其值为 1。<code>Person</code>具有一个自判断<code>residence</code>属性,它的类型是<code>Residence</code></p>
<p>如果你创建一个新的<code>Person</code>实例,它的<code>residence</code>属性由于是被定义为自判断型的,此属性将默认初始化为空:</p>
</code></pre><p><code>Residence</code>具有一个<code>Int</code>类型的<code>numberOfRooms</code>,其值为 1。<code>Person</code>具有一个可选<code>residence</code>属性,它的类型是<code>Residence</code></p>
<p>如果你创建一个新的<code>Person</code>实例,它的<code>residence</code>属性由于是被定义为可选型的,此属性将默认初始化为空:</p>
<pre><code>let john = Person()
</code></pre><p>如果你想使用感叹号(<code>!</code>)强制解析获得这个人<code>residence</code>属性<code>numberOfRooms</code>属性值,将会引发运行时错误,因为这时没有可以供解析的<code>residence</code>值。</p>
<pre><code>let roomCount = john.residence!.numberOfRooms
@ -638,9 +638,9 @@ class Residence {
println(&quot;Unable to retrieve the number of rooms.&quot;)
}
// 打印 &quot;Unable to retrieve the number of rooms.
</code></pre><p>这告诉 Swift 来链接自判断<code>residence?</code>属性,如果<code>residence</code>存在则取回<code>numberOfRooms</code>的值。</p>
<p>因为这种尝试获得<code>numberOfRooms</code>的操作有可能失败,可选链会返回<code>Int?</code>类型值,或者称作“自判断<code>Int</code>”。当<code>residence</code>是空的时候(上例),选择<code>Int</code>将会为空,因此会出先无法访问<code>numberOfRooms</code>的情况。</p>
<p>要注意的是即使numberOfRooms是非自判断<code>Int</code><code>Int?</code>)时这一点也成立。只要是通过可选链的请求就意味着最后<code>numberOfRooms</code>总是返回一个<code>Int?</code>而不是<code>Int</code></p>
</code></pre><p>这告诉 Swift 来链接可选<code>residence?</code>属性,如果<code>residence</code>存在则取回<code>numberOfRooms</code>的值。</p>
<p>因为这种尝试获得<code>numberOfRooms</code>的操作有可能失败,可选链会返回<code>Int?</code>类型值,或者称作“可选<code>Int</code>”。当<code>residence</code>是空的时候(上例),选择<code>Int</code>将会为空,因此会出先无法访问<code>numberOfRooms</code>的情况。</p>
<p>要注意的是即使numberOfRooms是非可选<code>Int</code><code>Int?</code>)时这一点也成立。只要是通过可选链的请求就意味着最后<code>numberOfRooms</code>总是返回一个<code>Int?</code>而不是<code>Int</code></p>
<p>你可以自己定义一个<code>Residence</code>实例给<code>john.residence</code>,这样它就不再为空了:</p>
<pre><code>john.residence = Residence()
</code></pre><p><code>john.residence</code> 现在有了实际存在的实例而不是nil了。如果你想使用和前面一样的可选链来获得<code>numberOfRoooms</code>,它将返回一个包含默认值 1 的<code>Int?</code></p>
@ -675,13 +675,13 @@ class Residence {
</code></pre><p>因为<code>Residence</code>存储了一个<code>Room</code>实例的数组,它的<code>numberOfRooms</code>属性值不是一个固定的存储值,而是通过计算而来的。<code>numberOfRooms</code>属性值是由返回<code>rooms</code>数组的<code>count</code>属性值得到的。</p>
<p>为了能快速访问<code>rooms</code>数组,<code>Residence</code>定义了一个只读的子脚本,通过插入数组的元素角标就可以成功调用。如果该角标存在,子脚本则将该元素返回。</p>
<p><code>Residence</code>中也提供了一个<code>printNumberOfRooms</code>的方法,即简单的打印房间个数。</p>
<p>最后,<code>Residence</code>定义了一个自判断属性叫<code>address</code><code>address?</code>)。<code>Address</code>类的属性将在后面定义。
<p>最后,<code>Residence</code>定义了一个可选属性叫<code>address</code><code>address?</code>)。<code>Address</code>类的属性将在后面定义。
用于<code>rooms</code>数组的<code>Room</code>类是一个很简单的类,它只有一个<code>name</code>属性和一个设定<code>room</code>名的初始化器。</p>
<pre><code>class Room {
let name: String
init(name: String) { self.name = name }
}
</code></pre><p>这个模型中的最终类叫做<code>Address</code>。它有三个自判断属性他们额类型是<code>String?</code>。前面两个自判断属性<code>buildingName</code><code>buildingNumber</code>作为地址的一部分,是定义某个建筑物的两种方式。第三个属性<code>street</code>,用于命名地址的街道名:</p>
</code></pre><p>这个模型中的最终类叫做<code>Address</code>。它有三个类型是<code>String?</code>的可选属性。前面两个可选属性<code>buildingName</code><code>buildingNumber</code>作为地址的一部分,是定义某个建筑物的两种方式。第三个属性<code>street</code>,用于命名地址的街道名:</p>
<pre><code>class Address {
var buildingName: String?
var buildingNumber: String?
@ -717,7 +717,7 @@ if let roomCount = john.residence?.numberOfRooms {
println(“The number of rooms is \(numberOfRooms)”)
}
</code></pre><p>这个方法没有返回值。但是,没有返回值类型的函数和方法有一个隐式的返回值类型<code>Void</code>参见Function Without Return Values</p>
<p>如果你利用可选链调用此方法,这个方法的返回值类型将是<code>Void?</code>,而不是<code>Void</code>因为当通过可选链调用方法时返回值总是可选类型optional type即使这个方法本没有定义返回值,你也可以使用<code>if</code>语句来检查是否能成功调用<code>printNumberOfRooms</code>方法:如果方法通过可选链调用成功,<code>printNumberOfRooms</code>的隐式返回值将会是<code>Void</code>,如果没有成功,将返回<code>nil</code></p>
<p>如果你利用可选链调用此方法,这个方法的返回值类型将是<code>Void?</code>,而不是<code>Void</code>因为当通过可选链调用方法时返回值总是可选类型optional type。即使这个方法本没有定义返回值,你也可以使用<code>if</code>语句来检查是否能成功调用<code>printNumberOfRooms</code>方法:如果方法通过可选链调用成功,<code>printNumberOfRooms</code>的隐式返回值将会是<code>Void</code>,如果没有成功,将返回<code>nil</code></p>
<pre><code>if john.residence?.printNumberOfRooms() {
println(&quot;It was possible to print the number of rooms.&quot;)
} else {
@ -729,7 +729,7 @@ if let roomCount = john.residence?.numberOfRooms {
<p>你可以使用可选链来尝试从子脚本获取值并检查子脚本的调用是否成功,然而,你不能通过可选链来设置子代码。</p>
<blockquote>
<p>注意:
当你使用可选链来获取子脚本的时候,你应该将问号放在子脚本括号的前面而不是后面。可选链的问号一般直接跟在自判断表达语句的后面。</p>
当你使用可选链来获取子脚本的时候,你应该将问号放在子脚本括号的前面而不是后面。可选链的问号一般直接跟在表达语句的后面。</p>
</blockquote>
<p>下面这个例子用在<code>Residence</code>类中定义的子脚本来获取<code>john.residence</code>数组中第一个房间的名字。因为<code>john.residence</code>现在是<code>nil</code>,子脚本的调用失败了。</p>
<pre><code>if let firstRoomName = john.residence?[0].name {
@ -756,7 +756,7 @@ if let firstRoomName = john.residence?[0].name {
<p>你可以将多层可选链连接在一起,可以掘取模型内更下层的属性方法和子脚本。然而多层可选链不能再添加比已经返回的可选值更多的层。
也就是说:</p>
<p>如果你试图获得的类型不是可选类型,由于使用了可选链它将变成可选类型。
如果你试图获得的类型已经是可选类型,由于可选链它也不会提高自判断性。</p>
如果你试图获得的类型已经是可选类型,由于可选链它也不会提高可选性。</p>
<p>因此:</p>
<p>如果你试图通过可选链获得<code>Int</code>值,不论使用了多少层链接返回的总是<code>Int?</code>
相似的,如果你试图通过可选链获得<code>Int?</code>值,不论使用了多少层链接返回的总是<code>Int?</code></p>
@ -781,10 +781,10 @@ if let johnsStreet = john.residence?.address?.street {
println(&quot;Unable to retrieve the address.&quot;)
}
// 打印 &quot;John&#39;s street name is Laurel Street.&quot;
</code></pre><p>值得注意的是,“<code>!</code>”符的在定义<code>address</code>实例时的使用(<code>john.residence.address</code><code>john.residence</code>属性是一个可选类型,因此你需要在它获取<code>address</code>属性之前使用<code>!</code>解析以获得它的实际值。</p>
</code></pre><p>值得注意的是,“<code>!</code>”符号在给<code>john.residence.address</code>分配<code>address</code>实例时的使用<code>john.residence</code>属性是一个可选类型,因此你需要在它获取<code>address</code>属性之前使用<code>!</code>解析以获得它的实际值。</p>
<p><a name="chaining_on_methods_with_optional_return_values"></a></p>
<h2 id="-">链接自判断返回值的方法</h2>
<p>前面的例子解释了如何通过可选链来获得可选类型属性值。你也可以通过调用返回可选类型值的方法并按需链接方法的返回值。</p>
<h2 id="-">链接可选返回值的方法</h2>
<p>前面的例子解释了如何通过可选链来获得可选类型属性值。你也可以通过可选链调用一个返回可选类型值的方法并按需链接方法的返回值。</p>
<p>下面的例子通过可选链调用了<code>Address</code>类中的<code>buildingIdentifier</code> 方法。这个方法的返回值类型是<code>String?</code>。如上所述,这个方法在可选链调用后最终的返回值类型依然是<code>String?</code></p>
<pre><code>if let buildingIdentifier = john.residence?.address?.buildingIdentifier() {
println(&quot;John&#39;s building identifier is \(buildingIdentifier).&quot;)

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.18" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.18" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,24 +587,24 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_431">
<section class="normal" id="section-gitbook_42">
<blockquote>
<p>翻译xiehurricane</p>
<p>校对happyming</p>
</blockquote>
<h1 id="-type-casting-">类型检查Type Casting</h1>
<h1 id="-type-casting-">类型转换Type Casting</h1>
<hr>
<p>本页包含内容:</p>
<ul>
<li><a href="#defining_a_class_hierarchy_for_type_casting">定义一个类层次作为例子</a></li>
<li><a href="#checking_type">检查类型</a></li>
<li><a href="#downcasting">向下转型Downcasting</a></li>
<li><a href="#type_casting_for_any_and_anyobject"><code>Any</code><code>AnyObject</code>的类型检查</a></li>
<li><a href="#type_casting_for_any_and_anyobject"><code>Any</code><code>AnyObject</code>的类型转换</a></li>
</ul>
<p> <em>类型检查</em>是一种检查类实例的方式,并且或者也是让实例作为它的父类或者子类的一种方式。</p>
<p> 类型检查在 Swift 中使用<code>is</code><code>as</code>操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。</p>
<p> 你也可以用来检查一个类是否实现了某个协议,就像在 <a href="Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-XID_363">Protocols Checking for Protocol Conformance</a>部分讲述的一样。</p>
<p> 你也可以用来检查一个类是否实现了某个协议,就像在 <a href="Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-XID_363">Checking for Protocol Conformance</a>部分讲述的一样。</p>
<p><a name="defining_a_class_hierarchy_for_type_casting"></a></p>
<h2 id="-">定义一个类层次作为例子</h2>
<p> 你可以将它用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。这下面的三个代码段定义了一个类层次和一个包含了几个这些类实例的数组,作为类型检查的例子。</p>
@ -621,7 +621,7 @@
init(name: String, director: String) {
self.director = director
super.init(name: name)
}
}
}
class Song: MediaItem {
@ -634,17 +634,17 @@ class Song: MediaItem {
</code></pre><p> 最后一个代码段创建了一个数组常量 <code>library</code>
,包含两个<code>Movie</code>实例和三个<code>Song</code>实例。<code>library</code>的类型是在它被初始化时根据它数组中所包含的内容推断来的。Swift 的类型检测器能够演绎出<code>Movie</code><code>Song</code> 有共同的父类 <code>MediaItem</code> ,所以它推断出 <code>MediaItem[]</code> 类作为 <code>library</code> 的类型。</p>
<pre><code>let library = [
Movie(name: &quot;Casablanca&quot;, director: &quot;Michael Curtiz&quot;),
Song(name: &quot;Blue Suede Shoes&quot;, artist: &quot;Elvis Presley&quot;),
Movie(name: &quot;Citizen Kane&quot;, director: &quot;Orson Welles&quot;),
Song(name: &quot;The One And Only&quot;, artist: &quot;Chesney Hawkes&quot;),
Song(name: &quot;Never Gonna Give You Up&quot;, artist: &quot;Rick Astley&quot;)
Movie(name: &quot;Casablanca&quot;, director: &quot;Michael Curtiz&quot;),
Song(name: &quot;Blue Suede Shoes&quot;, artist: &quot;Elvis Presley&quot;),
Movie(name: &quot;Citizen Kane&quot;, director: &quot;Orson Welles&quot;),
Song(name: &quot;The One And Only&quot;, artist: &quot;Chesney Hawkes&quot;),
Song(name: &quot;Never Gonna Give You Up&quot;, artist: &quot;Rick Astley&quot;)
]
// the type of &quot;library&quot; is inferred to be MediaItem[]
</code></pre><p> 在幕后<code>library</code> 里存储的媒体项依然是 <code>Movie</code><code>Song</code> 类型的,但是,若你迭代它,取出的实例会是 <code>MediaItem</code> 类型的,而不是 <code>Movie</code><code>Song</code> 类型的。为了让它们作为它们本来的类型工作,你需要检查它们的类型或者向下转换它们的类型到其它类型,就像下面描述的一样。</p>
<p><a name="checking_type"></a></p>
<h2 id="-">检查类型</h2>
<p> 用类型检查操作符(<code>is</code>)来检查一个实例是否属于特定子类型。类型检查操作符返回 <code>true</code> 若实例属于那个子类型,若不属于返回 <code>false</code></p>
<p> 用类型检查操作符(<code>is</code>)来检查一个实例是否属于特定子类型。若实例属于那个子类型,类型检查操作符返回 <code>true</code> ,否则返回 <code>false</code></p>
<p> 下面的例子定义了两个变量,<code>movieCount</code><code>songCount</code>,用来计算数组<code>library</code><code>Movie</code><code>Song</code> 类型的实例数量。</p>
<pre><code>var movieCount = 0
var songCount = 0
@ -666,12 +666,12 @@ println(&quot;Media library contains \(movieCount) movies and \(songCount) songs
Song</code>检查item是否为<code>Song</code>类型的实例。在循环结束后,<code>movieCount</code><code>songCount</code>的值就是被找到属于各自的类型的实例数量。</p>
<p><a name="downcasting"></a></p>
<h2 id="-downcasting-">向下转型Downcasting</h2>
<p> 某类型的一个常量或变量可能在幕后实际上属于一个子类。你可以相信,上面就是这种情况。你可以尝试向下转到它的子类型,用类型检查操作符(<code>as</code>)</p>
<p> 因为向下转型可能会失败,类型检查操作符带有两种不同形式。可选形式( optional form <code>as?</code> 返回一个你试图下转成的类型的可选值optional value。强制形式 <code>as</code> 把试图向下转型和强制解包force-unwraps结果作为一个混合动作。</p>
<p> 当你不确定下转可以成功时,用类型检查的可选形式(<code>as?</code>)。可选形式的类型检查总是返回一个可选值optional value并且若下转是不可能的可选值将是 <code>nil</code> 。这使你能够检查下转是否成功。</p>
<p> 只有你可以确定下转一定会成功时,才使用强制形式。当你试图下转为一个不正确的类型时,强制形式的类型检查会触发一个运行时错误。</p>
<p> 某类型的一个常量或变量可能在幕后实际上属于一个子类。你可以相信,上面就是这种情况。你可以尝试向下转到它的子类型,用类型转换操作符(<code>as</code>)</p>
<p> 因为向下转型可能会失败,类型转型操作符带有两种不同形式。可选形式( optional form <code>as?</code> 返回一个你试图下转成的类型的可选值optional value。强制形式 <code>as</code> 把试图向下转型和强制解包force-unwraps结果作为一个混合动作。</p>
<p> 当你不确定下转可以成功时,用类型转换的可选形式(<code>as?</code>)。可选形式的类型转换总是返回一个可选值optional value并且若下转是不可能的可选值将是 <code>nil</code> 。这使你能够检查下转是否成功。</p>
<p> 只有你可以确定下转一定会成功时,才使用强制形式。当你试图下转为一个不正确的类型时,强制形式的类型转换会触发一个运行时错误。</p>
<p> 下面的例子,迭代了<code>library</code>里的每一个 <code>MediaItem</code> ,并打印出适当的描述。要这样做,<code>item</code>需要真正作为<code>Movie</code><code>Song</code>的类型来使用。不仅仅是作为 <code>MediaItem</code>。为了能够使用<code>Movie</code><code>Song</code><code>director</code><code>artist</code>属性,这是必要的。</p>
<p> 在这个示例中,数组中的每一个<code>item</code>可能是 <code>Movie</code><code>Song</code>。 事前你不知道每个<code>item</code>的真实类型,所以这里使用可选形式的类型检查 <code>as?</code>)去检查循环里的每次下转。</p>
<p> 在这个示例中,数组中的每一个<code>item</code>可能是 <code>Movie</code><code>Song</code>。 事前你不知道每个<code>item</code>的真实类型,所以这里使用可选形式的类型转换 <code>as?</code>)去检查循环里的每次下转。</p>
<pre><code>for item in library {
if let movie = item as? Movie {
println(&quot;Movie: &#39;\(movie.name)&#39;, dir. \(movie.director)&quot;)
@ -688,16 +688,16 @@ println(&quot;Media library contains \(movieCount) movies and \(songCount) songs
</code></pre><p> 示例首先试图将 <code>item</code> 下转为 <code>Movie</code>。因为 <code>item</code> 是一个 <code>MediaItem</code>
类型的实例,它可能是一个<code>Movie</code>;同样,它可能是一个 <code>Song</code>,或者仅仅是基类
<code>MediaItem</code>。因为不确定,<code>as?</code>形式在试图下转时将返还一个可选值。 <code>item as Movie</code> 的返回值是<code>Movie?</code>类型或 “optional <code>Movie</code>”。</p>
<p> 当下转为 <code>Movie</code> 应用在两个 <code>Song</code>
<p>下转<code>Movie</code> 应用在两个 <code>Song</code>
实例时将会失败。为了处理这种情况上面的例子使用了可选绑定optional binding来检查可选 <code>Movie</code>真的包含一个值(这个是为了判断下转是否成功。)可选绑定是这样写的“<code>if let movie = item as? Movie</code>”,可以这样解读:</p>
<p> “尝试将 <code>item</code> 转为 <code>Movie</code>类型。若成功,设置一个新的临时常量 <code>movie</code> 来存储返回的可选<code>Movie</code></p>
<p> 若下转成功,然后<code>movie</code>的属性将用于打印一个<code>Movie</code>实例的描述,包括它的导演的名字<code>director</code>。当<code>Song</code>被找到时,一个相近的原理被用来检测 <code>Song</code> 实例和打印它的描述。</p>
<p>下转成功,然后<code>movie</code>的属性将用于打印一个<code>Movie</code>实例的描述,包括它的导演的名字<code>director</code>。当<code>Song</code>被找到时,一个相近的原理被用来检测 <code>Song</code> 实例和打印它的描述。</p>
<blockquote>
<p>注意:</p>
<p>转换没有真的改变实例或它的值。潜在的根本的实例保持不变;只是简单地把它作为它被转换成的类来使用。</p>
</blockquote>
<p><a name="type_casting_for_any_and_anyobject"></a></p>
<h2 id="-any-anyobject-"><code>Any</code><code>AnyObject</code>的类型检查</h2>
<h2 id="-any-anyobject-"><code>Any</code><code>AnyObject</code>的类型转换</h2>
<p> Swift为不确定类型提供了两种特殊类型别名</p>
<ul>
<li><p><code>AnyObject</code>可以代表任何class类型的实例。</p>
@ -712,7 +712,7 @@ println(&quot;Media library contains \(movieCount) movies and \(songCount) songs
<h3 id="-anyobject-"><code>AnyObject</code>类型</h3>
<p> 当需要在工作中使用 Cocoa
APIs它一般接收一个<code>AnyObject[]</code>类型的数组,或者说“一个任何对象类型的数组”。这是因为 Objective-C 没有明确的类型化数组。但是,你常常可以确定包含在仅从你知道的 API 信息提供的这样一个数组中的对象的类型。</p>
<p> 在这些情况下,你可以使用强制形式的类型检查(<code>as</code>)来下转在数组中的每一项到比 <code>AnyObject</code> 更明确的类型不需要可选解析optional unwrapping</p>
<p> 在这些情况下,你可以使用强制形式的类型转换(<code>as</code>)来下转在数组中的每一项到比 <code>AnyObject</code> 更明确的类型不需要可选解析optional unwrapping</p>
<p> 下面的示例定义了一个 <code>AnyObject[]</code> 类型的数组并填入三个<code>Movie</code>类型的实例:</p>
<pre><code>let someObjects: AnyObject[] = [
Movie(name: &quot;2001: A Space Odyssey&quot;, director: &quot;Stanley Kubrick&quot;),
@ -780,7 +780,7 @@ things.append(Movie(name: &quot;Ghostbusters&quot;, director: &quot;Ivan Reitman
</code></pre><p></p>
<blockquote>
<p>注意:</p>
<p>在一个switch语句的case中使用强制形式的类型检查操作符as, 而不是 as?)来检查和转换到一个明确的类型。在 switch case 语句的内容中这种检查总是安全的。</p>
<p>在一个switch语句的case中使用强制形式的类型转换操作符as, 而不是 as?)来检查和转换到一个明确的类型。在 switch case 语句的内容中这种检查总是安全的。</p>
</blockquote>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.19" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.19" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_433">
<section class="normal" id="section-gitbook_44">
<blockquote>
<p>翻译Lin-H</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.20" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.20" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_435">
<section class="normal" id="section-gitbook_46">
<blockquote>
<p>翻译lyuka</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.21" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.21" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_437">
<section class="normal" id="section-gitbook_48">
<blockquote>
<p>翻译geek5nan</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.22" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.22" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_439">
<section class="normal" id="section-gitbook_50">
<blockquote>
<p>翻译takalard</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2.23" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2.23" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_441">
<section class="normal" id="section-gitbook_52">
<blockquote>
<p>翻译xielingwang</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="2" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="2" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_443">
<section class="normal" id="section-gitbook_54">
<h1 id="swift-">Swift 教程</h1>
<p>本章介绍了 Swift 的各种特性及其使用方法,是全书的核心部分。</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.1" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.1" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_446">
<section class="normal" id="section-gitbook_57">
<blockquote>
<p>翻译ChildhoodAndy</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.2" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.2" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_454">
<section class="normal" id="section-gitbook_65">
<blockquote>
<p>翻译superkam</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.3" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.3" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_448">
<section class="normal" id="section-gitbook_59">
<blockquote>
<p>翻译lyuka</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.4" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.4" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_450">
<section class="normal" id="section-gitbook_61">
<blockquote>
<p>翻译sg552</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.6" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.6" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_452">
<section class="normal" id="section-gitbook_63">
<blockquote>
<p>翻译marsprince</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.7" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.7" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_444">
<section class="normal" id="section-gitbook_55">
<blockquote>
<p>翻译Hawstein</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.8" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.8" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_456">
<section class="normal" id="section-gitbook_67">
<blockquote>
<p>翻译honghaoz</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.9" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.9" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_458">
<section class="normal" id="section-gitbook_69">
<blockquote>
<p>翻译fd5788</p>

View File

@ -44,7 +44,7 @@
<div class="book" data-level="3.10" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.10" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -585,7 +585,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_460">
<section class="normal" id="section-gitbook_71">
<blockquote>
<p>翻译StanZhai</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3.5" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3.5" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -587,7 +587,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_462">
<section class="normal" id="section-gitbook_73">
<blockquote>
<p>翻译coverxit</p>

View File

@ -46,7 +46,7 @@
<div class="book" data-level="3" data-basepath=".." data-revision="1402675563756">
<div class="book" data-level="3" data-basepath=".." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>

View File

@ -44,7 +44,7 @@
<div class="book" data-level="0" data-basepath="." data-revision="1402675563756">
<div class="book" data-level="0" data-basepath="." data-revision="1402676386943">
<div class="book-header">
<!-- Actions Left -->
<a href="#" class="btn pull-left toggle-summary" aria-label="Toggle summary"><i class="fa fa-align-justify"></i></a>
@ -585,7 +585,7 @@
<div class="page-inner">
<section class="normal" id="section-gitbook_392">
<section class="normal" id="section-gitbook_3">
<blockquote>
<p>Swift 中文翻译组364279588要求对翻译感兴趣</p>

View File

@ -1,5 +1,5 @@
CACHE MANIFEST
# Revision 1402675563757
# Revision 1402676386944
CACHE:
index.html
@ -7,9 +7,9 @@ chapter1/01_swift.html
chapter1/02_a_swift_tour.html
chapter1/chapter1.html
chapter2/13_Inheritance.html
chapter2/01_The_Basics.html
chapter2/03_Strings_and_Characters.html
chapter2/04_Collection_Types.html
chapter2/01_The_Basics.html
chapter2/05_Control_Flow.html
chapter2/06_Functions.html
chapter2/07_Closures.html
@ -77,8 +77,8 @@ gitbook/jsrepl/sandbox.html
gitbook/jsrepl/sandbox.js
gitbook/print.css
gitbook/style.css
gitbook/plugins/gitbook-plugin-mixpanel/plugin.js
gitbook/plugins/gitbook-plugin-mathjax/plugin.js
gitbook/plugins/gitbook-plugin-mixpanel/plugin.js
NETWORK:
*

File diff suppressed because one or more lines are too long