Asynchronous Programming with SwiftUI and Combine: Functional Programming to Build UIs on Apple Platforms
434Asynchronous Programming with SwiftUI and Combine: Functional Programming to Build UIs on Apple Platforms
434Paperback(1st ed.)
-
SHIP THIS ITEMChoose Expedited Shipping at checkout for delivery by Thursday, April 4PICK UP IN STORECheck Availability at Nearby Stores
Available within 2 business hours
Related collections and offers
Overview
Using SwiftUI and Combine build more error-free apps in a shorter amount of time, targeting all of Apple’s platforms (iOS, iPadOS, watchOS, macOS, tvOS) with little to no overhead.
By the end of the book you will have a solid understanding for architecting and implementing UI-heavy apps in a declarative and functional reactive way using SwiftUI, Combine, and async/await.
You will:
- Build simple and gradually more complex UIs in SwiftUI
- Understand SwiftUI’s state management system
- Work with Combine and Swift’s new async/await APIs to access the network and access other asynchronous APIs
- Architect and structure modern applications on Apple platforms using SwiftUI, Combine, and async/await
Product Details
ISBN-13: | 9781484285718 |
---|---|
Publisher: | Apress |
Publication date: | 01/14/2023 |
Edition description: | 1st ed. |
Pages: | 434 |
Product dimensions: | 6.10(w) x 9.25(h) x (d) |
About the Author
Peter shares his knowledge and experience through writing on his personal blog, peterfriese.dev, publishing videos on YouTube, speaking at conferences and meet-ups, crafting sample apps and contributing to the Firebase SDKs.
Prior to working at Google, he has held roles as a software engineer, software architect, and principal consultant at companies such as Lufthansa Systems, Gentleware, itemis, and Zühlke.
Table of Contents
Chapter 1: SwiftUI - A new Beginning• Why a New UI framework?
• SwiftUI Principles
• Declarative vs Imperative
• State Management
• Composition over Inheritance
• Everything is a View
• UIs are a function of their state
• A quick tour of SwiftUI
• Creating a new app
• Anatomy of a SwiftUI app
• Two-way tooling
• Adding your first button
• Print “hello” to the console
• Explain live mode (need to turn on debug mode so you can
see console output while in preview)
• A brief overview of statement management
• Use code editor and preview pane to update the “hello
world” app to allow the user to give their name
• TextField, Label, (Button)
• @State to bind the TextField input
• Bind Label, so it gets updated automatically
• Run the app in live preview
Chapter 2: Getting Started with SwiftUI
○ Building Blocks
• Views
• View Modifiers
• Property Wrappers
• Simple UI Controls
■ Lists
■ Navigation
○ Composing UIs from simple UI elements
• Building a list row
• Making it reusable
• extracting parts into separate structs / views
• using ViewBuilders (properties / functions)
Chapter 3: SwiftUI Foundation
• Opaque return types
• Implicit returns from single-expression functions
• Function Builders
• View Builders
• Multiple Trailing Closures Domain Specific languages
• Property Wrappers
• The View Life Cycle
Chapter 4: State Management
• Managing State with Property Wrappers ■ @State
■ @ObservableObject ■ @ObservedObject
■ @StateObject
■ @EnvironmentObject
• SwiftUI Patterns and State Management
• Pattern: Drill-Down Navigation
• Pattern: Input form
• Pattern: Lookup field
• Pattern: Local state in a single dialog
• View Lifecycle
• See Michael Long’s article
• Maybe even build some sort of introspector?
• Build my own debugging utilities
Chapter 5: Building Input Forms
• Building simple forms
Build a simple form with a couple of simple input fields.
• Building advanced forms
■ Look-up fields
■ Drill-down
■ In-place editing (e.g. date picker) ■ Sections
■ Forms and Data Binding / State Management
■ Building a sign-up form
■ Username
■ Password / Repetition ■ Validation
■ Come up with a non-Combine version for the following rules:
• Do the passwords match? Password strong enough?
• Username long enough?
• Username still available?
• How to handle state?
Chapter 6: Functional Reactive Programming and Combine
• Introduction to Functional Reactive Programming
• What is it?
• Why is it so cool / hot?
• How can it help to make your apps better and more error-free
• Core Combine Concepts ■ Publishers
■ Subscribers
■ Operators
• Combine Visualised
• Marble Diagrams
• Show some Combine operators as Marble Diagrams
Chapter 7: Combine and SwiftUI
○ Driving UI state
○ Input validation using Combine
• verify that the passwords match verify username length
• verify username is still available
• verify password meets password complexity rules
• show error messages for the individual error conditions
• combine all the above into a single state that drives the enabled
state of the sign-up button
• Optimise our code
• use debounce to throttle the number of calls on our fake backend
• ensure UI updates happen on the main thread (use receiveOn)
• Closure
Combine makes our code more maintainable.
• It helps to decouple business logic from our UI
• This also makes our code more testable
Chapter 8: Testing Combine Code
• Writing tests for asynchronous code
• Mocking parts of your implementation
• Some useful helpers
Chapter 9: Advanced SwiftUI UIs
○ LazyVGrid / LazyHGrid
○ Outlines
Chapter 10: Advanced SwiftUI - Building Reusable UI Components
• Keep it lean and mean
• Extracting functionality into sub-views
• Using ViewBuilders to organise view code within a screen
• Creating Container Components
• Making your views customisable
• Packaging your components using Swift Package Manager
• Integrating views and view modifiers with the Xcode library
Chapter 11: Building a Complete App with SwiftUI and Combine
• Features of the app
• Data Model
• OpenLibrary API
• Firebase
Chapter 12: Displaying a list of books
• Building a list cell from simple UI views
• Compose a list view
• Make your code reusable
Chapter 13: Implementing a search screen
○ Implementing a re-usable search bar
• Designing the UI
• Data Binding and State Management
• Making the view re-usable
○ Connecting to the OpenLibrary API
• Searching book titles
• Using Combine to improve working with the API
• Debounce
• Mapping JSON Data
• Error handling Automatic retries
Chapter 14: Drill-Down Navigation and State Management
○ Implementing a book details / edit screen
○ Drill-down navigation pattern
Chapter 15: Persisting Data in Firestore
• What is Firebase?
• What is Firestore?
• NoSQL
■ Real-time Sync
• Mapping our data model to Firestore
• Reading and writing data from / to Firestore
• Implementing Combine Publishers for Firestore
Chapter 16: App Store Hero Animation
• Magic Move
• SwiftUI Magic Move Animations
Explain how they work
• Transition the current list view to make use of animations
• Distribute your code
Appendix A: An Overview of all SwiftUI Views