Professional Swift
Buy Rights Online Buy Rights

Rights Contact Login For More Details

More About This Title Professional Swift

English

Transition from Objective-C to the cleaner, more functional Swift quickly and easily

Professional Swift shows you how to create Mac and iPhone applications using Apple's new programming language. This code-intensive, practical guide walks you through Swift best practices as you learn the language, build an application, and refine it using advanced concepts and techniques. Organized for easy navigation, this book can be read end-to-end for a self-paced tutorial, or used as an on-demand desk reference as unfamiliar situations arise. The first section of the book guides you through the basics of Swift programming, with clear instruction on everything from writing code to storing data, and Section II adds advanced data types, advanced debugging, extending classes, and more. You'll learn everything you need to know to make the transition from Objective-C to Swift smooth and painless, so you can begin building faster, more secure apps than ever before.

  • Get acquainted with the Swift language and syntax
  • Write, deploy, and debug Swift programs
  • Store data and interface with web services
  • Master advanced usage, and bridge Swift and Objective-C

Professional Swift is your guide to the future of OS X and iOS development.

English

About the author

Michael Dippery is an avid Objective-C programmer who has written a number of libraries and other open source code for both Mac and iOS. He has contributed to many popular Mac open source projects, including Adium and Colloquy, and has worked professionally with languages as diverse as Python, Java, Scala, and VBScript. Michael has a passion for the theory and implementation of programming languages and compilers.

Visit us at wrox.com where you have access to free code samples, Programmer to Programmer forums, and discussions on the latest happenings in the industry from around the world.

English

INTRODUCTION xxiii

PART I: BUILDING APPLICATIONS WITH SWIFT CHAPTER 1: A SWIFT PRIMER 3

What Is Swift? 4

Why Learn Swift? 5

Working with Constants and Variables 5

Understanding Swift Data Types 6

Using Numerical Types 6

Boolean Types 7

Using Character Types 8

Using Arrays 10

Using Dictionaries 10

Using Tuples 11

Working with Type Annotations 12

Minimizing Annotation with Type Inference 13

Clarifying Code with Type Aliasing 14

Working with Operators 15

Using Basic Operators 15

Using Compound Assignment Operators 17

Using Overfl ow Operators 17

Using Range Operators 18

Using Logical Operators 18

Using Comparison Operators 19

Using Custom Operators 19

Making Decisions with Control Flow 19

Using Conditional Statements 20

Using Loops 23

Control Transfer Statements 25

Grouping Types with Enumerations 26

Working with Functions 27

Declaring Functions 27

Specifying Parameter Names 28

Defining Default Parameters 29

Specifying Variadic Parameters 29

Specifying Constant, Variable, and In-Out Parameters 30

Function Types 31

Using Closures 32

Summary 34

CHAPTER 2: WRITING A SWIFT PROGRAM 35

Setting Up Xcode 36

Downloading from Apple’s Developer Portal 36

Downloading Xcode 36

Experimenting with Playgrounds 38

Using Playgrounds in Xcode 38

A Simple Example in Playground 38

A More Exciting Playground Example 40

Writing Swift in Xcode 41

Creating a New Swift Project 42

Creating the Swiftisms App 44

Creating the Interface 45

Creating Connections between the View Controller and the Object 46

Connecting the Buttons and the Action 50

Displaying Random Strings 51

What Next? 53

Debugging Swift Applications 53

Understanding Breakpoint Types 54

Setting Breakpoints 54

Using the Debugger 55

Using the Hierarchical View 56

Using the Debugger View and the po Command 56

Executing the Program 58

Summary 59

CHAPTER 3: CLASSES, STRUCTS, AND ENUMS 61

Working with Classes and Structs 62

Defining Classes and Structs 62

Initializing Classes and Structs 64

Creating an Initial Value 64

Defining Your Own Initializer 65

Writing an Initializer 66

Working with Multiple Initializers 68

Deinitializing Classes 69

Working with Properties 70

Using Simple Properties 70

Using Lazy Properties 72

Using Computed Properties 72

Observing Property Changes 73

Understanding Methods 74

Understanding the Difference between Classes and Structs 76

Working with Enumerations 78

Summary 79

CHAPTER 4: CONCURRENCY IN SWIFT 81

What Is Concurrency? 82

Understanding Processes 82

Understanding Threads 84

Why Concurrency? 85

Designing Concurrent Programs 85

Concurrency in iOS and OS X 86

Understanding Event Loops 86

Understanding Run Loops 87

Understanding Asynchronous Methods 87

Understanding NSTimer 89

Understanding NSThread 91

Understanding Grand Central Dispatch 92

Summary 94

CHAPTER 5: INTERFACING WITH WEB SERVICES 95

Understanding Web Services 95

Implementing a Web Services Client 97

Signing Up for a Firebase Account 97

Laying Out the User Interface 98

Hooking Up the Add Album View Controller 101

Adding the Album Creation View Controller 103

Hooking Up the Segue 104

Creating the Album Model 104

Communicating with Firebase 106

Creating the Firebase Connector 106

Making Asynchronous Web Requests 109

Processing JSON Data 110

Creating New Albums 111

Deleting Albums 112

Wiring Up the View and Data Models 112

Wiring Up the Segue 115

Run the Application 116

Summary 118

CHAPTER 6: STORING DATA WITH CORE DATA 119

What Is Core Data? 120

The Core Data Stack 120

Using Core Data with Swift 121

Setting Up the Birthdays Application 122

Getting User Input 128

Examining Xcode Files 129

Adding Methods to the AppDelegate Class 134

Handling the Dialog Sheet 135

Hooking Up the Dialog Sheet 137

Displaying Data 137

Implementing the Table View’s Behavior 138

The Completed Application Delegate 140

Summary 145

PART II: ADVANCED SWIFT CONCEPTS

CHAPTER 7: EXTENDING CLASSES 149

Working with Class Extensions 150

Adding Methods to Classes 150

Adding Properties to Classes 152

Mutating Classes in Extensions 153

Specifying Behavior with Protocols 153

Adopting Protocols 154

Declaring Properties and Methods 154

Working with Optional Methods and Properties 156

Protocols Are Types 158

Checking for Protocol Conformance 158

Using Protocol Types in Collections 159

Composing Protocols 160

Inheriting from Other Protocols 160

Adopting Protocols in Class Extensions 161

Working with Generics 163

Generic Classes 164

Working with Type Constraints 165

Summary 166

CHAPTER 8: ADVANCED DATA TYPES 167

Working with Enums and Algebraic Data Types 168

Matching Patterns 168

Putting It All Together with JSON 170

Working with Optional Types 172

Working with Null Values 172

Excluding Null Values 173

Understanding Swift’s Version of Null 173

Chaining Optional Values 174

Understanding Type Casting 175

Grouping Values with Tuples 177

Custom Operators 179

Defining Custom Operators 183

Defining Precedence and Associativity 183

A Final Word about Operators 186

Using Functions and Closures 187

Summary 188

CHAPTER 9: BRIDGING SWIFT AND OBJECTIVE?]C 189

The Successor to Objective-C 190

Introducing Namespaces and Modules 191

Organizing Code with Namespaces 191

Distributing Code with Modules 193

Using Access Modifi ers 193

Specifying an Access Level 194

How Swift and Objective-C Interact 194

Using Swift Classes in Objective-C 195

Generating an Objective-C Header 195

Objective-C and Swift-Only Features 196

Using Swift Code in an Objective-C Application 196

Using Objective-C in Swift 198

Generating a Bridging Header 198

Calling Objective-C Code from Swift 199

Using C and C++ Code with Swift 202

Working with C Scalar Types 202

Accessing Memory with C Pointers 203

Working with Global Constants and Defines and Swift 204

Calling C Code from Swift 204

Using C++ Code in Swift 206

Summary 206

CHAPTER 10: DEBUGGING SWIFT APPLICATIONS 207

The Art of Debugging 208

Creating CircleView 208

Drawing the Circle 209

Adding Sliders 210

Completing the Project 211

Printing Values 213

Working with Debuggers 215

Examining Errors with lldb, the LLVM Debugger 216

Basic Breakpoints 216

Using lldb to Inspect Programs 218

Using the Variable Pane 218

Entering Commands in the lldb Command Prompt Pane 218

Displaying Code Hierarchy with the lldb Ribbon 219

Walking through a Program with the lldb Ribbon 221

Removing or Disabling Breakpoints 222

Setting Conditional Breakpoints 222

Setting Symbolic Breakpoints 223

Exploring the Debugger 225

Summary 228

CHAPTER 11: THE SWIFT RUNTIME 229

What Is a Runtime? 230

Understanding the Objective?]C Runtime 231

Dispatching Methods Dynamically in Objective?]C 231

Message Passing 233

Resolving Methods 233

Messages and Methods 237

Exploring the Swift Runtime 238

Understanding Virtual Method Tables 239

Loading Swift Programs 241

Summary 245

APPENDIX: AN OVERVIEW OF C 247

Comparing Procedural and Object-Oriented Programming Styles 248

Understanding the Importance of C Language Syntax 249

Defining Data with Variables and Arrays 249

Integral Data Types 249

Floating-Point Data Types 251

Arrays 252

Typedefs 253

Enums 254

Performing Calculations with Operators 254

Arithmetic Operators 254

Logical Operators 256

Relational Operators 258

Bitwise Operators 258

Bitshift Operators 259

Referencing Data with Pointers 260

Organizing Data with Structs 261

Generalizing Data with Unions 261

Referencing Functions with Function Pointers 262

INDEX 265

loading