Book Image

Swift Cookbook. - Second Edition

By : Keith Moon, Chris Barker
Book Image

Swift Cookbook. - Second Edition

By: Keith Moon, Chris Barker

Overview of this book

Swift is an exciting, multi-platform, general-purpose programming language, and with this book, you'll explore the features of its latest version, Swift 5.3. The book begins with an introduction to the basic building blocks of Swift 5.3, its syntax, and the functionalities of Swift constructs. You’ll then discover how Swift Playgrounds provide an ideal platform to write, execute, and debug your Swift code. As you advance through the chapters, the book will show you how to bundle variables into tuples or sets, order your data with an array, store key-value pairs with dictionaries, and use property observers. You’ll also get to grips with the decision-making and control structures in Swift, examine advanced features such as generics and operators, and explore functionalities outside of the standard library. Once you’ve learned how to build iOS applications using UIKit, you'll find out how to use Swift for server-side programming, run Swift on Linux, and investigate Vapor. Finally, you'll discover some of the newest features of Swift 5.3 using SwiftUI and Combine to build adaptive and reactive applications, and find out how to use Swift to build and integrate machine learning models along with Apple’s Vision Framework. By the end of this Swift book, you'll have discovered solutions to boost your productivity while developing code using Swift 5.3.
Table of Contents (14 chapters)
12
About Packt

Defining option sets

The use of bitwise operations to hold multiple options in one value is a common pattern and is used throughout the Cocoa Touch framework, with one example being UIDeviceOrientation. In Swift, there is a protocol, OptionSet, that formalizes this pattern and provides additional convenience. In this recipe, we will explore how to define your own option sets.

How to do it...

Let's rewrite our example from the last recipe, which defined supported device values, to use an OptionSet:

struct Devices: OptionSet { 

let rawValue: Int

static let phone = Devices(rawValue: 1 << 0)
static let tablet = Devices(rawValue: 1 << 1)
static let watch = Devices(rawValue: 1 << 2)
static let laptop = Devices(rawValue: 1 << 3)
static let desktop = Devices(rawValue: 1 << 4)
static let tv = Devices(rawValue: 1 << 5)
static let brainImplant = Devices(rawValue: 1 <<...