Book Image

An iOS Developer's Guide to SwiftUI

By : Michele Fadda
Book Image

An iOS Developer's Guide to SwiftUI

By: Michele Fadda

Overview of this book

– SwiftUI transforms Apple Platform app development with intuitive Swift code for seamless UI design. – Explore SwiftUI's declarative programming: define what the app should look like and do, while the OS handles the heavy lifting. – Hands-on approach covers SwiftUI fundamentals and often-omitted parts in introductory guides. – Progress from creating views and modifiers to intricate, responsive UIs and advanced techniques for complex apps. – Focus on new features in asynchronous programming and architecture patterns for efficient, modern app design. – Learn UIKit and SwiftUI integration, plus how to run tests for SwiftUI applications. – Gain confidence to harness SwiftUI's full potential for building professional-grade apps across Apple devices.
Table of Contents (25 chapters)
Free Chapter
1
Part 1: Simple Views
5
Part 2: Scrollable Views
8
Part 3: SwiftUI Navigation
11
Part 4: Graphics and Animation
14
Part 5: App Architecture
17
Part 6: Beyond Basics

Filtering data with predicates

To filter data in SwiftData, we use the #Predicate macro.

The same macro is used to filter data loaded with @Query, and also when selecting data to be deleted with delete(model:).

For instance, if we had a database with albums of songs by bands, we could write a query such as this one to filter all the albums of the Beatles:

@Query(filter: #Predicate<Album> { album in
      album.band.name == "The Beatles"
}) var albums: [Album]

To allow the compiler to correctly handle the type information, with #Predicate, you need to identify the data type of the queried information, in our example, Album.

#Predicate is a macro that converts Swift code into a number of PredicateExpression objects. The predicate is checked at compile time for type safety, unlike NSPredicate from Core Data.

At the moment of writing, the process is not perfect, and #Predicate does not support all the features and operations...