INTRODUCTION
The IT world is an extremely fast-changing one. Small changes occur nearly daily, and every now and then something big happens that changes the entire industry, if not the world. For example, the iPhone, introduced in 2007, transformed the mobile industry overnight, spearheading the new era of the smartphones. The launch of the iPad three years later (2010) changed the way we use our computers, causing many to predict that we are all entering the end of the PC era.
For a long time after its inception in the 1980s, Objective-C was used by NeXT for its NeXTStEP operating system. Mac OS X and iOS both derived from NeXTSTEP, and Objective-C was thus the natural choice of language to use for Mac OS and iOS development. Developers starting on iOS development often complain that Objective-C does not look like a modern programming language (such as Java or C#), and that it is difficult to write and requires spending significant amounts of time trying to learn. For seven years, Apple has improved on the language and the iOS framework, making life easier for developers by introducing helpful features, such as Automatic Reference Counting (ARC), which takes the drudgery out of memory management, and Storyboard, which simplifies the flow of your application user interface. However, this did not stop all the complaints. Furthermore, Apple needed a new language that could take iOS and Mac OS development to the next level.
In 2014, at the Apple World Wide Developers Conference (WWDC), Apple took many developers by surprise by introducing a new programming language: Swift. After seven years, Apple finally released a new language that can replace Objective-C! As you will see throughout this book, Swift is a modern programming language with an easy-to-read syntax, and strict enforcement of type safety.
This book was written with busy developers in mind. It aims to cut through all the technical jargon and dive straight into the language. Of course, the best way to learn any new language is to see code examples, and this book is loaded with them. To get the most from the material, therefore, I strongly recommend that you work through the examples in each chapter as you read them.
This book is targeted at both beginning iOS developers and experienced Objective-C developers. It assumes a foundation in programming, and an understanding of object-oriented programming (OOP) concepts is required to get the most out of this book.
All the code samples in the chapters were written and tested using the final version of Xcode 6. Because the Swift language is still evolving, expect to see minor tweaks by the time this book is on the market.
This book covers the key topics of Swift programming using Xcode 6. It is divided into the following 12 chapters:
Chapter 1, “Introduction to Swift,” covers the basic syntax of Swift and how to set up the development environment so that you can test your Swift code.
Chapter 2, “Data Types,” covers the basic data types supported in Swift and how to perform the common operations involving them. It also covers the new tuple and optional data types introduced in Swift.
Chapter 3, “Strings and Characters,” discusses how strings and characters are managed in Swift. In particular, special emphasis is placed on how the string type in Swift is backwardly compatible with the NSString in Objective-C. Also covered are things you need to be aware of when dealing with Unicode characters.
Chapter 4, “Basic Operators,” covers all the commonly used operators supported by Swift. In addition, it discusses the new range operators introduced in Swift.
Chapter 5, “Functions,” explains how functions are defined in Swift and the use of internal and external parameter names when calling them.
Chapter 6, “Collections,” covers the collection types supported in Swift – arrays and dictionaries.
Chapter 7, “Control Flow and Looping,” covers how to make decisions in Swift and how to use the looping statements to execute your Swift code repetitively.
Chapter 8, “Structures and Classes,” covers the basics of these programming constructs. It also demonstrates how to define properties and methods in your classes and structures.
Chapter 9, “Inheritance,” covers how to create subclasses in Swift and how access control rules affect the accessibility of a member. It also explains how to extend a class using the extension feature.
Chapter 10, “Closures,” covers everything you need to know about these blocks of functionality and demonstrates how they enable you to write versatile code in Swift.
Chapter 11, “Protocols and Delegates,” discusses a very important part of Swift’s design pattern. The protocol and delegate model is the basis on which most of the APIs in iOS and Mac OS programming are based.
Chapter 12, “Generics,” covers how Swift embraces this familiar programming concept, which enables the developer to write highly adaptable code that promotes sharing and reusing.
The appendix offers the answers to the exercises found at the end of each chapter.
In order to follow the examples provided in this book, you need a Mac to install Xcode 6. Xcode 6 is available for download, free, from the Mac App Store. No iOS device is needed to test the code in this book. For testing, you can create either a Playground project or an iOS project, which you can then test on the included iPhone Simulator.
To help you get the most from the text and keep track of what’s happening, we’ve used a number of conventions throughout the book.
NOTE Notes indicates notes, tips, hints, tricks, and asides to the current discussion.
WARNING Warnings hold important, not-to-be-forgotten information that is directly relevant to the surrounding text.
As for styles in the text:
• We highlight new terms and important words when we introduce them.
• We show keyboard strokes like this: Command+A.
• We show file names, URLs, and code within the text like so: persistence.properties.
We present code in two different ways:
We use a monofont type with no highlighting for most code examples.We use bold to emphasize code that is particularly important in the present context or to show changes from a previous code snippet.
As you work through the examples in this book, you should type all the code into Xcode and observe the results. Remember, the best way to learn a language is to experience it yourself and make mistakes. For Chapter 11, you can find the source code for the LBS project at www.wrox/com/go/beginningswift. When at the site, simply locate the book’s title (use the Search box or one of the title lists) and click the Download Code link on the book’s detail page to obtain all the source code for the book.
After you download the code, just decompress it with your favorite compression tool. Alternatively, go to the main Wrox code download page at www.wrox.com/dynamic/books/download.aspx to see the code available for this book and all other Wrox books.
NOTE Because many books have similar titles, you may find it easiest to search by ISBN; this book’s ISBN is 978-1-119-00931-3.
We make every effort to ensure that there are no errors in the text or in the code. However, no one is perfect, and mistakes do occur. If you find an error in one of our books, such as a spelling mistake or a faulty piece of code, we would be very grateful for your feedback. By sending in errata, you may save another reader hours of frustration and at the same time help us provide even higher-quality information.
To find the errata page for this book, go to www.wrox.com and locate the title using the Search box or one of the title lists. Then, on the book details page, click the Book Errata link. On this page, you can view all errata that has been submitted for this book and