<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.0.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Foundation",
  "identifier" : "/documentation/Foundation/ProgressUserInfoKey",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "c:@T@NSProgressUserInfoKey"
  },
  "title" : "ProgressUserInfoKey"
}
-->

# ProgressUserInfoKey

Keys for the user info dictionary that affect the autogenerated localized additional description string.

```
struct ProgressUserInfoKey
```

## Discussion

Enhance the autogenerated description that [`localizedAdditionalDescription`](/documentation/Foundation/Progress/localizedAdditionalDescription) provides by including keys and related values in the user info dictionary. For example, if you provide the keys [`fileCompletedCountKey`](/documentation/Foundation/ProgressUserInfoKey/fileCompletedCountKey) and [`fileTotalCountKey`](/documentation/Foundation/ProgressUserInfoKey/fileTotalCountKey), the [`localizedAdditionalDescription`](/documentation/Foundation/Progress/localizedAdditionalDescription) method uses the values from those keys to provide strings showing the number of completed and total files.

## Topics

### Creating Keys

[`init(_:)`](/documentation/Foundation/ProgressUserInfoKey/init(_:))

Creates a new key using the specified string.

[`init(rawValue:)`](/documentation/Foundation/ProgressUserInfoKey/init(rawValue:))

Creates a new key using the raw value of a string you specify.

### Using General Keys

[`NSProgressEstimatedTimeRemainingKey`](/documentation/Foundation/ProgressUserInfoKey/estimatedTimeRemainingKey)

A key with a corresponding value that represents the time remaining, in seconds.

[`NSProgressThroughputKey`](/documentation/Foundation/ProgressUserInfoKey/throughputKey)

A key with a corresponding value that indicates the speed of data processing, in bytes per second.

### Using File Operation Keys

[`NSProgressFileAnimationImageKey`](/documentation/Foundation/ProgressUserInfoKey/fileAnimationImageKey)

A key with a corresponding value that is an image, typically an icon to represent the file.

[`NSProgressFileAnimationImageOriginalRectKey`](/documentation/Foundation/ProgressUserInfoKey/fileAnimationImageOriginalRectKey)

A key with a corresponding value that indicates the starting location of the image onscreen.

[`NSProgressFileCompletedCountKey`](/documentation/Foundation/ProgressUserInfoKey/fileCompletedCountKey)

A key with a corresponding value that represents the number of completed files.

[`NSProgressFileIconKey`](/documentation/Foundation/ProgressUserInfoKey/fileIconKey)

A key with a corresponding value that must be an image, typically an icon to represent the file.

[`NSProgressFileOperationKindKey`](/documentation/Foundation/ProgressUserInfoKey/fileOperationKindKey)

A key with a corresponding value that indicates the kind of file operation a progress object represents.

[`NSProgressFileTotalCountKey`](/documentation/Foundation/ProgressUserInfoKey/fileTotalCountKey)

A key with a corresponding value that represents the total number of files within a file operation.

[`NSProgressFileURLKey`](/documentation/Foundation/ProgressUserInfoKey/fileURLKey)

A key with a corresponding value that represents the file URL of a file operation for the progress object.

## Relationships

### Conforms To

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

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

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

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

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

---

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)