<!--
{
  "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/ProgressReporter",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "s:10Foundation16ProgressReporterC"
  },
  "title" : "ProgressReporter"
}
-->

# ProgressReporter

ProgressReporter is a wrapper for ProgressManager that carries information about ProgressManager.

```
@dynamicMemberLookup final class ProgressReporter
```

## Overview

It is read-only and can be added as a child of another ProgressManager.

## Topics

### Instance Properties

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

The completed units of work.
If `self` is indeterminate, the value will be 0.

[`var debugDescription: String`](/documentation/Foundation/ProgressReporter/debugDescription)

A textual representation of the progress reporter suitable for debugging.

[`var description: String`](/documentation/Foundation/ProgressReporter/description)

A textual representation of the progress reporter.

[`var fractionCompleted: Double`](/documentation/Foundation/ProgressReporter/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.

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

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

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

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

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

The total units of work.

### Instance Methods

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> [UInt64]`](/documentation/Foundation/ProgressReporter/summary(of:)-2qbq7)

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

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> Double`](/documentation/Foundation/ProgressReporter/summary(of:)-4lsh2)

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

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> [String?]`](/documentation/Foundation/ProgressReporter/summary(of:)-5klzp)

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

[`func summary<P>(of: KeyPath<ProgressManager.Properties, P.Type>) -> [URL?]`](/documentation/Foundation/ProgressReporter/summary(of:)-6x2a5)

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

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

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

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

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

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

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

### Subscripts

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

Gets or sets custom string properties.

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

Gets or sets custom unsigned integer properties.

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

Gets or sets custom unsigned integer properties.

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

Gets or sets custom URL properties.

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

Gets or sets custom double properties.

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

Gets or sets custom integer properties.

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

Gets or sets custom duration properties.

### Type Aliases

[`typealias Property`](/documentation/Foundation/ProgressReporter/Property)

## Relationships

### Conforms To

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

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

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

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

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

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

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

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

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

---

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)