Book Image

SwiftUI Projects

By : Craig Clayton
Book Image

SwiftUI Projects

By: Craig Clayton

Overview of this book

Released by Apple during WWDC 2019, SwiftUI provides an innovative and exceptionally simple way to build user interfaces for all Apple platforms with the power of Swift. This practical guide involves six real-world projects built from scratch, with two projects each for iPhone, iPad, and watchOS, built using Swift programming and Xcode. Starting with the basics of SwiftUI, you’ll gradually delve into building these projects. You’ll learn the fundamental concepts of SwiftUI by working with views, layouts, and dynamic types. This SwiftUI book will also help you get hands-on with declarative programming for building apps that can run on multiple platforms. Throughout the book, you’ll work on a chart app (watchOS), NBA draft app (watchOS), financial app (iPhone), Tesla form app (iPhone), sports news app (iPad), and shoe point-of-sale system (iPad), which will enable you to understand the core elements of a SwiftUI project. By the end of the book, you’ll have built fully functional projects for multiple platforms and gained the knowledge required to become a professional SwiftUI developer.
Table of Contents (13 chapters)

Understanding the basics of CloudKit

If you have not used CloudKit before, then you might be more familiar with the name most iPhone users are accustomed to, which is iCloud. iCloud allows applications to synchronize data across devices using Apple servers. It provides three basic services:

  • Key-value storage: Stores single values
  • Document storage: Stores files
  • CloudKit storage: Stores structured data in public and private databases

We will be using the third option in this chapter – CloudKit storage.

In CloudKit, the structure is a bit different than you might be accustomed to. Apple puts all of a user's data into a container. The most common structure is having a single container per app, but your app can use multiple containers across multiple apps. In CloudKit, a container is represented as CKContainer. You can access the default container by doing the following:

let container = CKContainer.default()

It is recommended to use a custom...