<!--
{
  "availability" : [
    "macOS: 10.14.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PhotoKit",
  "identifier" : "/documentation/PhotosUI/PHProjectTypeDescriptionDataSource",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "PhotosUI"
    ],
    "preciseIdentifier" : "c:objc(pl)PHProjectTypeDescriptionDataSource"
  },
  "title" : "PHProjectTypeDescriptionDataSource"
}
-->

# PHProjectTypeDescriptionDataSource

A protocol that you use to provide the project with type description data.

```
protocol PHProjectTypeDescriptionDataSource : NSObjectProtocol
```

## Overview

An object adheres to this protocol to provide a type description for your app’s Photos project extension. You must implement this protocol to provide subtypes, a description, and footer text. You can optionally respond to the system discarding the data source by implementing [`extensionWillDiscardDataSource()`](/documentation/PhotosUI/PHProjectTypeDescriptionDataSource/extensionWillDiscardDataSource()).

## Topics

### Providing Required Fields

[`func subtypes(for: PHProjectType) -> [PHProjectTypeDescription]`](/documentation/PhotosUI/PHProjectTypeDescriptionDataSource/subtypes(for:))

Provides the root-level project type descriptions and descriptions of any promised subtypes with [`canProvideSubtypes`](/documentation/PhotosUI/PHProjectTypeDescription/canProvideSubtypes) set to `true`.

[`func typeDescription(for: PHProjectType) -> PHProjectTypeDescription?`](/documentation/PhotosUI/PHProjectTypeDescriptionDataSource/typeDescription(for:))

Provides the updated project type description for previously invalidated project types.

[`func footerText(forSubtypesOf: PHProjectType) -> NSAttributedString?`](/documentation/PhotosUI/PHProjectTypeDescriptionDataSource/footerText(forSubtypesOf:))

Provides the footer text for the subtypes of the given project type.

### Responding to Removal

[`func extensionWillDiscardDataSource()`](/documentation/PhotosUI/PHProjectTypeDescriptionDataSource/extensionWillDiscardDataSource())

Provides an opportunity to use the data source before it’s released.

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)