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)

Mock account preview service

In SwiftUI, I love having previews, but they will not always work. We can use previews with Core Data. Setting up a mock preview service helps me to create Core Data objects and use them in preview. We need a checking account, a credit account, and at least two cards in this app. We only need two cards, one for each type of account, for now.

Open MockAccountPreviewService inside the Models folder and add the following code:

struct MockAccountPreviewService {
	static let moc = CoreDataManager.shared.context
	// Checking Account
	// Credit Account
	// Visa Card
	// AMEX Card
}

We have our struct and an instance of the managed object context, which we have named moc. We will pass moc to each item we need to create with Core Data.

Next, let's add the cards as we will need them for our accounts. Add the following after the // Visa Card comment:

static var visaCard: Card = {
    let card = Card(context: moc)
  ...