A B C D E F G H I J-K L M N O P Q R S T U V W X-Y-Z
* (asterisks), 331
{} (curly braces), 101
! (exclamation points), removing, 357
=== (identical to operator), 149
!== (not identical to operator), 149
1>, 8
_ (underscore), 358
access control, type access control, 230-231
accessing
super from subclasses, 163
type properties from instance properties, 224
values, indexes and subscripts, 41
actions, 352
adding
constraints to interfaces, 367-369
elements to interfaces, 355-356
instance methods
iTunes Search to Songs app, 380-383
methods to protocols, 266
optional members, to protocols, 274
parameters to protocol methods, 267
type constraints, 316
adopting protocols, 264-265, 269-273
aliased types, extending, 288
align attribute, 150
allObjects computed property, 325
allocation, Objective-C, 333-335
alternatives, to operation queues, 388
AnyObject, 238
ARC (Automatic Reference Counting), 247-248
reference behaviors, 248
closures, 256
reference relationships, 248
argument validation, 105
arithmetic operators, 29
Array, 396
ArrayLiteralConvertible, 395
accessing values, 41
data, creating/accessing, 41-42
enumerated arrays, for-in loops, 93
inserting elements, 43
items
removing, 44
updating/replacing, 44
for loops, 87
manipulating, 42
performing functions on each member, 123
slicing, 397
as?, 275
as operator, 275
assigning
assignment operator, 30
assignments, value types, 139
Assistant Editor, 6
associated types, in protocols, 20-21
associated values
enums, 177
named parameters, 177
asterisks (*), 331
asynchronous execution paths, 379
asynchronous programming
operation queues, 379
asynchronous results, observing, 377
attributes, align attribute, 150
auto-complete feature, Xcode, 125
Automatic Reference Counting. See ARC (Automatic Reference Counting)
base classes
overriding instance methods, 160-161
behaviors
protocols, 277
references, ARC (Automatic Reference Counting), 248
binary operators, 29
assignment operator, 30
comparison operators, 31
compound assignment operators, 30-31
logical operators, 33
standard arithmetic operators, 29
bindings, associated values, 178-179
blue text bubble, 383
boolean values, 394
BooleanLiteralConvertible, 395
break keyword, 71
break statement
transferring control of execution, switch statement, 76-77
bridging Objective-C, 335
module bridging, 335
cache expiry, 388
caches, 388
call instance methods, optional chaining, 309-310
calling
functions, 100
instance methods, from instance methods, 144
casting, 19
cells, reusing, 357
Character, 21
CharacterLiteralConvertible, 395
checking, for protocol conformance, 275
choosing, queues, 376
class inheritance, 155, 270-272
class instances
copying, 147
class keyword, 267
class types, initializing, 193
similarities, 145
creating with dependent properties, 249-250
defining with properties and methods, 145-146
initialization delegation, 195-196
sizes, 367
closure capture lists, 256
resolving reference cycles in closures, 256-258
unowned references, 258
closure expressions
parameters, 127
return statements, 127
shorthand argument names, 128
syntax, 125
type inference, 127
closures, 124
lazy stored properties, 208
reference cycles, 256
trailing closures, 128
Cocoa, 238
concurrency, 374
dispatch queues, 375
operation queues, 375
Cocoa Touch, 238
combining
logical operators, 35
strings, 8
comparing
similarities, 145
equality, 150
strings, 395
comparison operators, 31
compiler errors, 186
completionHandler argument, 383
compound assignment operators, 30-31
computed instance, extensions, 287-289
asynchronous programming, 376-380
JSON (JavaScript Object Notation), 383-390
operation queues, 375
queues, choosing, 376
conditional statements, comparison operators, 31
conditions, 65
switch statement. See switch statement
ternary conditional operators, 69-70
while loops, 82
conformance
checking for protocol conformance, 275
protocols, extensions, 295-296
constraints, 352
continue statement, transferring control in loops, 93-94
control
transferring in loops
with continue statement, 93-94
transferring with return, 107
convenience initializers, 195
convertible protocols, 395-396
converting between integers and floating-point numbers, 19
copying
struct and class instances, 147
value types, 148
Core Data, 286
countElements, 21
CPUs (single-core processors), 373-374
custom initializers
structs, 189
custom values, initializers, 190-191
data
arrays, creating/accessing, 41-42
populating, adding elements to interfaces, 356-363
Character, 21
finding properties and methods on, 20-21
Int, 17
type inference, 16
deallocation, 243
declaring
stored properties, 206
variables, 15
decrement operators, 28
default parameter values, functions, 112
default values
initializing value types, 188-192
deinit, 244
delegates, 304
delegation
initialization. See initialization delegation
Dependency Inversion Principle, 276
dependent properties, classes, creating, 249-250
description() method, 167
designated initializers, 195
designating variables as optional, 54
dictionaries, 46
methods, 50
properties, 50
removing items, 50
type inference, 48
Dictionary, Objective-C, 337
DictionaryLiteralConvertible, 395
dispatch_sync function, 378
dispatched closures, nesting, 378
dispatching
network calls, 387
tasks, 377
random number generators, 85-86
downloading
starter project, integrating Swift into Objective-C app, 337-339
Xcode, 2
elements, 352
inserting in arrays, 43
interfaces, adding. See interfaces, adding elements
else if, 67
enumerated arrays, for-in loops, 93
associated values, 177
initializing, 193
instance methods, adding, 180-182
equality, comparing, 150
Equatable protocol, 316, 398-399
ExtendedGraphemeClusterLiteralConvertible, 396
extending
aliased types, 288
extensions
functionality, 287
protocol adoption and conformance, 295-296
structure, 286
external parameter names, 111-112
failable initializers, 333
fallthrough statement, transferring control of execution, switch statement, 77
fetchData() method, 383
file structure, Objective-C, 330
filter(), 401
first-class type, 172
floating point, 394
FloatLiteralConvertible, 396
for loops, 86
arrays, 87
for-condition-increment loops, 86-87
for-in loops, 88
enumerated arrays, 93
iterating through different data types, 88-90
ranges, 89
forced unwrapping with unwrap operator, optional variables, 55-56
for-condition-increment loops, 86-87
for-in loops, 88
enumerated arrays, 93
items, 88
iterating through different data types, 88-90
ranges, 89
fromRaw(T), 175
func keyword, 100
funcName, 101
function parameters, using functions as, 122-124
functionality, extensions, 287
protocol adoption and conformance, 295-296
argument validation, 105
calling, 100
creating to return mean, median, mode, 108-109
default parameter values, 112
filter(), 401
higher order functions, 117-118
returning function types, 118-120
map(), 400
median function, rewriting, 129-131
nesting functions within functions, 120-122
no parameters and no return types, 102
parameters, external parameter names, 111-112
performing, on each member of arrays, 123
return values, ignoring, 110
scopes, 104
standard library functions. See standard library functions
structure, 101
times, 104
GCD, 376
tasks, dispatching, 378
generic stack types, implementing, 319
generic types
associated types, in protocols, 20-21
creating generic functions to return unique arrays, 317-318
creating generic types, 319-322
extending, generic types, 322-323
type constraints, specifying, 315-319
get keyword, 210
getters, property accessors, 209-210
split(), 402
startsWith(), 402
stride(), 403
Hashable protocols, 318
header files, Objective-C, 330-332
hiding, parameter names, in initializers, 192
higher order functions, 117-118
functions as function parameters, 122-124
nesting functions within functions, 120-122
returning function types, 118-120
identical to operator, 149
if-else statement, 66
ignoring, return values, 110
implementation files, Objective-C, 332-333
implementing initialization chaining, 197-199
implicitly unwrapped optionals, optional variables, 57
increment operators, 28
indexes, accessing, values, 41
infinite loops, while loops, 83
overrides, preventing, 164-166
overriding inherited methods, 159-162
inherited initializers, 196
inheriting
init(), 186
initialization, 185
order of, Objective-C, 333
initialization chaining, 197-199
initialization delegation, 193-194
initialization process, 196-197, 200-201
initializer chaining, 196
initializers, 187
convenience initializers, 195
designated initializers, 195
failable initializers, 333
inherited initializers, 196
Objective-C, 331
setting default and custom values, 190-191
initializing
class types, 193
enums, 193
properties, in structs, 141
value types, 187
external parameter names, 192-193
setting default values, 188-192
inout keyword, 113
in-out parameters, functions, 112-113
inserting, elements, in arrays, 43
adding
calling from instance methods, 144
instances, determining an instance’s type, 235-237
Instrument, 237
IntegerLiteralConvertible, 396
integers, 394
integrating Swift into Objective-C app, 337
creating classes and bridging headers, 339-343
downloading starter project, 337-339
exposing Objective-C classes to Swift, 343
extending Objective-C classes with Swift, 343-344
running apps, 345
updating classes in storyboard, 344-345
interfaces
actions, 352
adding UI constraints, 367-369
constraints, 352
elements, 352
outlets, 352
projects, creating, 355
scenes, 352
preparing for, 366
view controllers, 352
internal access, 230
iOS, playgrounds, 6
is operator, 275
items
for-in loops, 88
removing
from arrays, 44
from dictionaries, 50
updating/replacing, in arrays, 44
iterating
through arrays, for-in loops, 90-91
through dictionaries, for-in loops, 91-92
through different data types, for-in loops, 88-90
iTunes Search, adding to Songs app, 380-383
JSON (JavaScript Object Notation), 238
key-value pairs, dictionaries, 46-47
keywords
break, 71
class, 267
deinit, 244
func, 100
get, 210
initializing, 186
inout, 113
lazy, 207
mutating, 267
required, 267
self, 143
static, 267
strong, 331
typealias, 229
labels, adding to interfaces, 364-367
lazy keyword, 207
lazy stored properties, 207-208
closures, 208
let, 40
libraries, standard library, 393-394
local access, caches, 388
logical operators, 33
combining, 35
NOT operator, 35
OR operator, 34
logical OR operator, 34
loops
for loops, 86
transferring control
with continue statement, 93-94
while loops. See while loops
Mac, playgrounds, 6
manipulating, arrays, 42
map(), 400
mapEachElement, 124
matching values, switch statement, 71-72
mean function, 125
median function, rewriting, 129-131
memberwise initialization, structs, 188-189
methods
adding to protocols, 266
defining in protocols, 266-267
dictionaries, 50
fetchData() method, 383
naming, 358
parseJson() method, 385
Microsoft SharePoint Server, optional chaining, 304
MKAnnotation protocol, 273
module bridging, Objective-C, 335
multiple protocol inheritance, 270-272
MutableCollectionType, 397
mutating, struct properties, 148-149
mutating functions, 267
mutating keyword, 267
named parameters, associated values, 177
naming methods, 358
naming conventions, protocols, 396
values versus references, 121
nested method calls, Objective-C, 334
nested types, extensions, 294-295
nesting, dispatched closures, 378
nesting functions, within functions, 120-122
network calls, dispatching, 387
nil coalescing operator, 58
NilLiteralConvertible, 396
non-specific types, type casting, 238
not identical to operator (!==), 149
NOT operator, 35
NSDictionary, Objective-C, 337
NSNumber, Objective-C, 336
Objective-C, 336
NSURLSession, downloading data, 382
numeric types, 394
Objective-C, 336
Objective-C, 329
bridging, 335
module bridging, 335
file structure, 330
if statement, 66
initializers, 331
nested method calls, 334
order of initialization, 333
versus Swift, 22
synthesizing, 331
Objective-C app, integrating Swift into, 337
creating classes and bridging headers, 339-343
downloading starter project, 337-339
exposing Objective-C classes to Swift, 343
extending Objective-C classes with Swift, 343-344
running apps, 345
updating classes in storyboard, 344-345
Objective-C classes, exposing to Swift, 343
Objective-C properties, 206
observing
asynchronous results, 377
serial results, 377
Open/Closed Principle, 286
operation queues, 375
alternatives, 388
asynchronous programming, 379
operators, 27
binary operators, 29
assignment operator, 30
comparison operators, 31
compound assignment operators, 30-31
logical operators, 33
standard arithmetic operators, 29
nil coalescing operator, 58
ternary conditional operators, 35
unary operators, 27
increment and decrement operators, 28
logical NOT operator, 28
unary minus operator, 29
optional chaining
call instance methods, 309-310
implicitly unwrapped optionals, 57
variables
forced unwrapping with unwrap operator, 55-56
nil coalescing operator, 58
optional binding to unwrap, 56
optional variables
forced unwrapping with unwrap operator, 55-56
implicitly unwrapped optionals, 57
optionals, 23
OR operator, 34
order of initialization, Objective-C, 333
outlets, 352
overloading
operators and protocols, 398-399
overrides
overriding
subscripts, 235
parameters
adding to protocol methods, 267
closure expressions, 127
default parameter values, 112
external parameter names, 111-112
as function parameters, 122-124
named parameters, associated values, 177
names, hiding, in initializers, 192
parentheses, 70
parseJson() method, 385
parsing, JSON (JavaScript Object Notation), 383-390
performing, functions on each member of arrays, 123
performMathAverage, 120
placeholder types, generics, 314-315
playgrounds
Mac, 6
Point struct
creating instances of, 141
creating to return mean, median, mode, 140
populating data, adding elements to interfaces, 356-363
prepareForSegue, updating, 389
preventing, overrides, 164-166
Printable protocol, 325
private access, 230
projects, interfaces, creating, 355
properties, 205
dictionaries, 50
initializing in structs, 141
property accessors, 209
inheriting/overriding, 215-218
setters, 210
inheriting/overriding, 218-220
stored properties, 206
lazy stored properties, 207-208
property accessors, 209
setters, 210
protocol names as types, 268-269
protocol<>, 395
adding optional members, 274
adopting and inheriting, 269-273
behaviors, 277
checking for conformance, 275
conformance, extensions, 295-296
convertible protocols, 395-396
creating and adopting, 264-265
adding, 266
MutableCollectionType, 397
naming conventions, 396
overloading operators and, 398-399
Printable, 325
protocol names as types, 268-269
Sliceable, 397
providing table view data source methods, 358-359
public access, 230
queues
choosing, 376
operation queues, 375
versus threads, 375
random number generators, 85-86
range matching, switch statement, 72-73
ranges, for-in loops, 89
Read-Eval-Print-Loop (REPL), 7-9
reference behaviors, ARC (Automatic Reference Counting), 248
reference cycles
ARC (Automatic Reference Counting), 248-255
closures, 256
creating, 250
resolving in closures, with closure capture lists, 256-258
reference relationships, ARC (Automatic Reference Counting), 248
reference types, 138
references, versus values in nested functions, 121
refining switch cases with where keyword, 75-76
removing
! (exclamation points), 357
items
from arrays, 44
from dictionaries, 50
repeating code, 235
REPL (Read-Eval-Print-Loop), 7-9, 249
replacing items, in arrays, 44
required keyword, 267
resolving reference cycles in closures, closure capture lists, 256-258
return, transferring control, 107
return someValue, 101
return statements, closure expressions, 127
return types, functions, 106-110
return values, ignoring, 110
returning function types, higher order functions, 118-120
ReturnType, 101
reusing cells, 357
rewriting median function, 129-131
scenes, 352
scopes, functions, 104
preparing for, 366
serial results, observing, 377
setters
property accessors, 210
providing custom setters for Square structs, 210-211
SharePoint Object Model, 304
shorthand argument names, closure expressions, 128
shorthand syntax, enums, 175-176
size classes, 367
Slice, 396
Sliceable, 397
slicing arrays, 397
Song struct, 362
SongDetailViewController class, 362
specifying type constraints, 315-319
split(), 402
Square struct, providing custom setters, 210-211
Stack, 320
standard arithmetic operators, 29
standard library functions, 394
filter(), 401
split(), 402
startsWith(), 402
stride(), 403
map(), 400
numeric types, 394
overloading operators and, 398-399
Slice, 396
string type, 394
string comparison, 395
startsWith(), 402
static keyword, 267
stored properties, 206
lazy stored properties, 207-208
stride(), 403
Objective-C, 336
string comparison, 395
string type, 394
string comparison, 395
StringLiteralConvertible, 396
strings
combining, 8
strong keyword, 331
struct instances, copying, 147
structs
adding instance methods, 142-143
similarities, 145
custom initializers, 189
initializing properties, 141
memberwise initialization, 188-189
type properties, 224
structures
comparing to classes, defining properties, 140-141
extensions, 286
functions, 101
initialization delegation, 194-195
subclasses
overriding instance methods, 160-161
accessing values, 41
creating, 231
overriding, 235
superclass method, preventing overrides, 164-165
superclasses, 157
Swift, 2
versus Objective-C, 22
Swift REPL, 102
switch cases, where keyword, 75-76
refining switch cases with where keyword, 75-76
transferring control of execution, 76
fallthrough statement, 77
switching enum values, 178-179
syntax
closure expressions, 125
do-while loops, 83
while loops, 82
synthesizing, Objective-C, 331
table view controller, 357
table view data source methods, providing, 358-359
table views, 275
tableView, 386
tasks, dispatching, 377
ternary conditional operators, 35, 69-70
threads, versus queues, 375
times, functions, 104
title property, 265
trailing closures, 128
transferring
control, with return, 107
control in loops
with continue statement, 93-94
control of switch statements, 76
fallthrough statement, 77
transitions, 352
tuple matching, switch statement, 74-75
type aliasing, 229
type bridging, Objective-C, 335-337
non-specific types, 238
type check operator, 235
type constraints
adding, 316
type inference, 16
closure expressions, 127
dictionaries, 48
type parameters, generics, 314-315
accessing from instance properties, 224
structs, 224
types
determining an instance’s type, 235-237
protocol names as types, 268-269
UI (user interface), 351
UI constraints, adding to interfaces, 367-369
UInt, 17
unary minus operator, 29
unary operators, 27
increment and decrement operators, 28
logical NOT operator, 28
unary minus operator, 29
underscore (_), 358
Unicode character, 15
unowned references
closure capture lists, 258
unsigned integer, 17
unwrapping
variables, optional binding to unwrap, 56
updating
items in arrays, 44
prepareForSegue, 389
use cases, optional values, 58-61
user interface (UI), 351-352. See also interfaces
value types
assignments, 139
copying, 148
initializing, 187
external parameter names, 192-193
setting default values, 188-192
values
comparing, do-while loops, 84-85
initializing, data types, 22-23
in nested functions, versus references, 121
variables, 14
declaring, 15
designating as optional, 54
optional binding to unwrap, 56
optional variables, nil coalescing operator, 58
variadic parameters, functions, 105-106
view controllers, 352, 356-357
viewDidLoad() method, 376
weak references, reference cycles, 252-253
where keyword, switch cases, 75-76
conditions, 82
random number generators, 85-86
infinite loops, 83
wrapping optional variables, 54-55
Xcode, 2
auto-complete feature, 125
downloading, 2
overriding, 159
Xcode command line tools, 249
Xcode playgrounds, ARC (Automatic Reference Counting), 249
xcrun, 8