An entity schema for a book.
To make your app's content available to Apple Intelligence,
conform your ``AppEntity`` to a schema that describes your content to the system.
If your app's functionality aligns with the `books` domain
and its content matches the `book` schema,
you can generate the properties and protocol conformance the schema requires
for your app entity implementation
with the `@AppEntity( .books.book)` Swift macro.
To make your app work with Siri,
see <doc://com.apple.documentation/documentation/appintents/apple-intelligence-and-siri-ai>.
The following example shows an app entity that conforms to the `book` schema:
```swift
@AppEntity(schema: .books.book)
struct BookEntity {
// MARK: Static
static let defaultQuery = BookEntityQuery()
// MARK: Properties
let id: <#Identifiable.ID#>
var title: String?
var seriesTitle: String?
var author: String?
var genre: String?
var purchaseDate: Date?
var url: URL?
var displayRepresentation: DisplayRepresentation {
<#DisplayRepresentation#>
}
// MARK: Query
struct BookEntityQuery: EntityQuery {
func entities(for identifiers: [BookEntity.ID]) async throws -> [BookEntity] {
<#code#>
}
}
}
```
The schema supports the following system experiences:
- Shortcuts
For more information about the App Intents framework and the experiences it supports,
see <doc://com.apple.documentation/documentation/appintents/getting-started-with-the-app-intents-framework>.
get · iOS 18.0+
settings
Swift declaration
var settings: some AppSchemaEntity { get }
An entity schema for settings.
To make your app's content available to Apple Intelligence,
conform your ``AppEntity`` to a schema that describes your content to the system.
If your app's functionality aligns with the `books` domain
and its content matches the `settings` schema,
you can generate the properties and protocol conformance the schema requires
for your app entity implementation
with the `@AppEntity( .books.settings)` Swift macro.
To make your app work with Siri,
see <doc://com.apple.documentation/documentation/appintents/apple-intelligence-and-siri-ai>.
The following example shows an app entity that conforms to the `settings` schema:
```swift
@AppEntity(schema: .books.settings)
struct BookSettingsEntity {
// MARK: Static
static let defaultQuery = BookSettingsEntityQuery()
// MARK: Properties
let id: <#Identifiable.ID#>
var font: <#BookFont#>
var fontSize: <#BookFontSize#>
var theme: <#BookTheme#>
var pageNavigationSetting: <#BookPageNavigationSetting#>
var isTextJustified: Bool
var isAllowMultipleColumns: Bool
var displayRepresentation: DisplayRepresentation {
<#DisplayRepresentation#>
}
// MARK: Query
struct BookSettingsEntityQuery: EntityQuery {
func entities(for identifiers: [BookSettingsEntity.ID]) async throws -> [BookSettingsEntity] {
<#code#>
}
}
}
```
The schema supports the following system experiences:
- Shortcuts
For more information about the App Intents framework and the experiences it supports,
see <doc://com.apple.documentation/documentation/appintents/getting-started-with-the-app-intents-framework>.
get · iOS 18.0+
audiobook
Swift declaration
var audiobook: some AppSchemaEntity { get }
An entity schema for an audiobook.
To make your app's content available to Apple Intelligence,
conform your ``AppEntity`` to a schema that describes your content to the system.
If your app's functionality aligns with the `books` domain
and its content matches the `audiobook` schema,
you can generate the properties and protocol conformance the schema requires
for your app entity implementation
with the `@AppEntity( .books.audiobook)` Swift macro.
To make your app work with Siri,
see <doc://com.apple.documentation/documentation/appintents/apple-intelligence-and-siri-ai>.
The following example shows an app entity that conforms to the `audiobook` schema:
```swift
@AppEntity(schema: .books.audiobook)
struct AudiobookEntity {
// MARK: Static
static let defaultQuery = AudiobookEntityQuery()
// MARK: Properties
let id: <#Identifiable.ID#>
var title: String?
var seriesTitle: String?
var author: String?
var genre: String?
var purchaseDate: Date?
var url: URL?
var displayRepresentation: DisplayRepresentation {
<#DisplayRepresentation#>
}
// MARK: Query
struct AudiobookEntityQuery: EntityQuery {
func entities(for identifiers: [AudiobookEntity.ID]) async throws -> [AudiobookEntity] {
<#code#>
}
}
}
```
The schema supports the following system experiences:
- Shortcuts
For more information about the App Intents framework and the experiences it supports,
see <doc://com.apple.documentation/documentation/appintents/getting-started-with-the-app-intents-framework>.