<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -",
    "watchOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Foundation",
  "identifier" : "/documentation/Foundation/ProgressManager",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "s:10Foundation15ProgressManagerC"
  },
  "title" : "ProgressManager"
}
-->

# ProgressManager

An object that conveys ongoing progress to the user for a specified task.

```
@dynamicMemberLookup final class ProgressManager
```

## Topics

### Protocols

[`protocol Property`](/documentation/Foundation/ProgressManager/Property)

A type that conveys additional task-specific information on progress.

### Initializers

[`convenience init(totalCount: Int?)`](/documentation/Foundation/ProgressManager/init(totalCount:))

Initializes `self` with `totalCount`.

### Instance Properties

[`var completedCount: Int`](/documentation/Foundation/ProgressManager/completedCount)

The completed units of work.

[`var fractionCompleted: Double`](/documentation/Foundation/ProgressManager/fractionCompleted)

The proportion of work completed.
This takes into account the fraction completed in its children instances if children are present.
If `self` is indeterminate, the value will be 0.0.

[`var isFinished: Bool`](/documentation/Foundation/ProgressManager/isFinished)

The state of completion of work.
If `completedCount` >= `totalCount`, the value will be `true`.

[`var isIndeterminate: Bool`](/documentation/Foundation/ProgressManager/isIndeterminate)

The state of initialization of `totalCount`.
If `totalCount` is `nil`, the value will be `true`.

[`var reporter: ProgressReporter`](/documentation/Foundation/ProgressManager/reporter)

A `ProgressReporter` instance, used for providing read-only observation of progress updates or composing into other `ProgressManager`s.

[`var totalCount: Int?`](/documentation/Foundation/ProgressManager/totalCount)

The total units of work.

### Instance Methods

[`func assign(count: Int, to: Progress)`](/documentation/Foundation/ProgressManager/assign(count:to:)-87zdf)

Adds a Foundation’s `Progress` instance as a child which constitutes a certain `count` of `self`’s `totalCount`.

[`func assign(count: Int, to: ProgressReporter)`](/documentation/Foundation/ProgressManager/assign(count:to:)-98a77)

Adds a `ProgressReporter` as a child, with its progress representing a portion of `self`’s progress.

[`func complete(count: Int)`](/documentation/Foundation/ProgressManager/complete(count:))

Increases `completedCount` by `count`.

[`func setCounts((inout Int, inout Int?) -> Void)`](/documentation/Foundation/ProgressManager/setCounts(_:))

[`func subprogress(assigningCount: Int) -> Subprogress`](/documentation/Foundation/ProgressManager/subprogress(assigningCount:))

Returns a `Subprogress` representing a portion of `self` which can be passed to any method that reports progress.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-3kyy8)

Returns a summary for a custom URL property across the progress subtree.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-3r60q)

Returns a summary for a custom integer property across the progress subtree.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-3voby)

Returns a summary for a custom double property across the progress subtree.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-73lzs)

Returns a summary for a custom duration property across the progress subtree.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-7jb53)

Returns a summary for a custom unsigned integer property across the progress subtree.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-bfr7)

Returns a summary for a custom string property across the progress subtree.

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> P.Summary`](/documentation/Foundation/ProgressManager/summary(of:)-txm5)

Returns a summary for a custom unsigned integer property across the progress subtree.

### Subscripts

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> Int`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-1qb7p)

Gets or sets custom integer properties.

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> String?`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-5rh0j)

Gets or sets custom string properties.

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> Duration`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-5rw99)

Gets or sets custom duration properties.

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> P.Value`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-62at9)

Gets or sets custom double properties.

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> UInt64`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-7h16n)

Gets or sets custom unsigned integer properties.

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> URL?`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-7r4v2)

Gets or sets custom URL properties.

[`subscript<P>(dynamicMember _: KeyPath<ProgressManager.Properties, P.Type>) -> UInt64`](/documentation/Foundation/ProgressManager/subscript(dynamicMember:)-8tb3b)

Gets or sets custom unsigned integer properties.

### Enumerations

[`enum Properties`](/documentation/Foundation/ProgressManager/Properties)

### Default Implementations

[CustomDebugStringConvertible Implementations](/documentation/Foundation/ProgressManager/CustomDebugStringConvertible-Implementations)

[CustomStringConvertible Implementations](/documentation/Foundation/ProgressManager/CustomStringConvertible-Implementations)

[Equatable Implementations](/documentation/Foundation/ProgressManager/Equatable-Implementations)

## Relationships

### Conforms To

[`Observable`](/documentation/Observation/Observable)

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

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

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

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

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

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

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

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

---

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)