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

# PHProjectTypeDescription

An extensible enumerator for [`PHProjectType`](/documentation/PhotosUI/PHProjectType) that’s presented to users in the project picker.

```
class PHProjectTypeDescription
```

## Overview

This object represents one project type choice presented in the project picker when a user is creating a project through project extensions. The [`PHProjectTypeDescriptionDataSource`](/documentation/PhotosUI/PHProjectTypeDescriptionDataSource) object returns this descriptor from [`typeDescriptionDataSource(for:invalidator:)`](/documentation/PhotosUI/PHProjectExtensionController/typeDescriptionDataSource(for:invalidator:)).

## Topics

### Creating a Project Type Description

[`convenience init(projectType: PHProjectType, title: String, description: String?, image: NSImage?)`](/documentation/PhotosUI/PHProjectTypeDescription/init(projectType:title:description:image:))

A convenience initializer without subtype descriptions.

[`init(projectType: PHProjectType, title: String, description: String?, image: NSImage?, subtypeDescriptions: [PHProjectTypeDescription])`](/documentation/PhotosUI/PHProjectTypeDescription/init(projectType:title:description:image:subtypeDescriptions:))

A designated initializer for project type descriptions with the full subtype hierarchy specified up front and a standard string for description text.

[`init(projectType: PHProjectType, title: String, attributedDescription: NSAttributedString?, image: NSImage?, subtypeDescriptions: [PHProjectTypeDescription])`](/documentation/PhotosUI/PHProjectTypeDescription/init(projectType:title:attributedDescription:image:subtypeDescriptions:))

A designated initializer for project type descriptions with the full subtype hierarchy specified up front and an attributed string for description text.

[`init(projectType: PHProjectType, title: String, description: String?, image: NSImage?, canProvideSubtypes: Bool)`](/documentation/PhotosUI/PHProjectTypeDescription/init(projectType:title:description:image:canProvideSubtypes:))

A designated initializer for project type descriptions with lazily fetched subtypes and a standard description string.

[`init(projectType: PHProjectType, title: String, attributedDescription: NSAttributedString?, image: NSImage?, canProvideSubtypes: Bool)`](/documentation/PhotosUI/PHProjectTypeDescription/init(projectType:title:attributedDescription:image:canProvideSubtypes:))

A designated initializer for project type descriptions with lazily fetched subtypes and an attributed description string.

### Describing a Project Type

[`var projectType: PHProjectType`](/documentation/PhotosUI/PHProjectTypeDescription/projectType)

An identifier for the project type.

[`var localizedTitle: String`](/documentation/PhotosUI/PHProjectTypeDescription/localizedTitle)

The localized title of the project type as shown to the user.

[`var localizedDescription: String?`](/documentation/PhotosUI/PHProjectTypeDescription/localizedDescription)

The localized description of the project type as shown to the user.

[`var localizedAttributedDescription: NSAttributedString?`](/documentation/PhotosUI/PHProjectTypeDescription/localizedAttributedDescription)

The localized attributed description of the project type as shown to the user.

[`var image: NSImage?`](/documentation/PhotosUI/PHProjectTypeDescription/image)

An optional image associated with the project type in the picker.

[`var subtypeDescriptions: [PHProjectTypeDescription]`](/documentation/PhotosUI/PHProjectTypeDescription/subtypeDescriptions)

An array of type descriptions used for subtype descriptions.

[`var canProvideSubtypes: Bool`](/documentation/PhotosUI/PHProjectTypeDescription/canProvideSubtypes)

A Boolean variable indicating whether subtypes can be fetched from the data source.

### Initializers

[`init?(coder: NSCoder)`](/documentation/PhotosUI/PHProjectTypeDescription/init(coder:))

## Relationships

### Conforms To

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Equatable`](/documentation/Swift/Equatable)

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

[`Sendable`](/documentation/Swift/Sendable)

[`Hashable`](/documentation/Swift/Hashable)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)