Swift Apprentice

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): raywenderlich
Series: raywenderlich
Year: 0

Language: English
Pages: 491

About the Cover......Page 14
About the Authors......Page 16
About the Artist......Page 17
What You Need......Page 18
Book License......Page 19
Book Source Code & Forums......Page 20
Introduction......Page 22
What’s in store......Page 23
Acknowledgments......Page 24
Chapter 1: Expressions, Variables & Constants......Page 28
How a computer works......Page 29
Playgrounds......Page 35
Getting started with Swift......Page 39
Printing out......Page 40
Arithmetic operations......Page 41
Math functions......Page 46
Naming data......Page 47
Increment and decrement......Page 51
Challenges......Page 52
Key points......Page 54
Chapter 2: Types & Operations......Page 56
Type conversion......Page 57
Strings......Page 61
Strings in Swift......Page 63
Tuples......Page 67
A whole lot of number types......Page 69
Type aliases......Page 70
A peek behind the curtains: Protocols......Page 71
Challenges......Page 72
Key points......Page 74
Chapter 3: Basic Control Flow......Page 75
Comparison operators......Page 76
The if statement......Page 80
Loops......Page 86
Challenges......Page 89
Key points......Page 91
Chapter 4: Advanced Control Flow......Page 92
Countable ranges......Page 93
For loops......Page 94
Switch statements......Page 99
Challenges......Page 105
Key points......Page 107
Chapter 5: Functions......Page 108
Function basics......Page 109
Functions as variables......Page 117
Commenting your functions......Page 120
Challenges......Page 122
Key points......Page 125
Chapter 6: Optionals......Page 126
Introducing nil......Page 127
Introducing optionals......Page 128
Unwrapping optionals......Page 130
Introducing guard......Page 134
Nil coalescing......Page 136
Challenges......Page 137
Key points......Page 139
Chapter 7: Arrays, Dictionaries & Sets......Page 142
What is an array?......Page 143
Creating arrays......Page 144
Accessing elements......Page 145
Modifying arrays......Page 149
Iterating through an array......Page 152
Running time for array operations......Page 154
Creating dictionaries......Page 155
Accessing values......Page 156
Modifying dictionaries......Page 157
Sets......Page 161
Key points......Page 163
Challenges......Page 164
Chapter 8: Collection Iteration with Closures......Page 168
Closure basics......Page 169
Iterating over collections with closures......Page 174
Challenges......Page 180
Key points......Page 182
Chapter 9: Strings......Page 183
Strings as collections......Page 184
Strings as bi-directional collections......Page 189
Substrings......Page 190
Character properties......Page 192
Encoding......Page 193
Challenges......Page 199
Key points......Page 200
Chapter 10: Structures......Page 204
Introducing structures......Page 205
Accessing members......Page 209
Introducing methods......Page 210
Structures as values......Page 211
Structures everywhere......Page 212
Conforming to a protocol......Page 213
Challenges......Page 214
Key points......Page 215
Chapter 11: Properties......Page 216
Stored properties......Page 217
Computed properties......Page 219
Type properties......Page 222
Property observers......Page 223
Lazy properties......Page 226
Challenges......Page 228
Key points......Page 229
Chapter 12: Methods......Page 230
Method refresher......Page 231
Introducing self......Page 233
Introducing initializers......Page 235
Introducing mutating methods......Page 239
Type methods......Page 240
Adding to an existing structure with extensions......Page 242
Challenges......Page 244
Key points......Page 246
Chapter 13: Classes......Page 247
Creating classes......Page 248
Reference types......Page 249
Understanding state and side effects......Page 257
Extending a class using an extension......Page 258
When to use a class versus a struct......Page 259
Challenges......Page 260
Key points......Page 262
Chapter 14: Advanced Classes......Page 263
Introducing inheritance......Page 264
Inheritance and class initialization......Page 271
When and why to subclass......Page 277
Understanding the class lifecycle......Page 280
Challenges......Page 283
Key points......Page 284
Chapter 15: Enumerations......Page 285
Your first enumeration......Page 286
Raw values......Page 290
Associated values......Page 293
Enumeration as state machine......Page 295
Iterating through all cases......Page 296
Enumerations without any cases......Page 297
Optionals......Page 298
Challenges......Page 299
Key points......Page 301
Chapter 16: Protocols......Page 302
Introducing protocols......Page 303
Implementing protocols......Page 308
Protocols in the Standard Library......Page 314
Key points......Page 319
Chapter 17: Generics......Page 321
Introducing generics......Page 322
Anatomy of generic types......Page 324
Arrays......Page 329
Dictionaries......Page 330
Optionals......Page 331
Generic function parameters......Page 332
Challenge......Page 333
Key points......Page 334
Chapter 18: Access Control, Code Organization and Testing......Page 337
Introducing access control......Page 339
Organizing code into extensions......Page 348
Testing......Page 352
Challenges......Page 356
Key points......Page 358
Chapter 19: Custom Operators, Subscripts & Keypaths......Page 359
Custom operators......Page 360
Subscripts......Page 365
Keypaths......Page 371
Challenges......Page 373
Key points......Page 375
Chapter 20: Pattern Matching......Page 376
Introducing patterns......Page 377
Basic pattern matching......Page 378
Patterns......Page 380
Advanced patterns......Page 384
Programming exercises......Page 389
Expression pattern......Page 391
Challenges......Page 394
Key points......Page 395
Chapter 21: Error Handling......Page 396
First level error handling with optionals......Page 397
Error protocol......Page 403
Throwing errors......Page 404
Handling errors......Page 405
Advanced error handling......Page 407
Rethrows......Page 411
Error handling for asynchronous code......Page 412
Challenges......Page 416
Key points......Page 417
Chapter 22: Encoding & Decoding Types......Page 418
What is Codable?......Page 419
Automatic encoding and decoding......Page 420
Encoding and decoding custom types......Page 421
Renaming properties with CodingKeys......Page 422
Manual encoding and decoding......Page 423
Writing tests for the Encoder and Decoder......Page 426
Challenges......Page 428
Key points......Page 429
Chapter 23: Memory Management......Page 430
Reference cycles for classes......Page 431
Reference cycles for closures......Page 435
Challenges......Page 438
Key points......Page 440
Chapter 24: Value Types & Value Semantics......Page 441
Value types vs. reference types......Page 442
Defining value semantics......Page 445
Implementing value semantics......Page 446
Challenges......Page 454
Key points......Page 458
Where to go from here?......Page 459
Chapter 25: Protocol-Oriented Programming......Page 460
Introducing protocol extensions......Page 461
Default implementations......Page 462
Understanding protocol extension dispatch......Page 464
Type constraints......Page 465
Protocol-oriented benefits......Page 467
Why Swift is a protocol-oriented language......Page 471
Challenges......Page 473
Key points......Page 474
Chapter 26: Advanced Protocols & Generics......Page 475
Non-existential protocols......Page 476
Recursive protocols......Page 482
Heterogeneous collections......Page 484
Type erasure......Page 485
Opaque return types......Page 486
Challenges......Page 488
Key points......Page 490
Conclusion......Page 491