<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macOS: 11.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "FileProvider",
  "identifier" : "/documentation/FileProvider/NSFileProviderManager/waitForChanges(below:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "File Provider",
      "FileProvider"
    ],
    "preciseIdentifier" : "c:objc(cs)NSFileProviderManager(im)waitForChangesOnItemsBelowItemWithIdentifier:completionHandler:"
  },
  "title" : "waitForChanges(below:completionHandler:)"
}
-->

# waitForChanges(below:completionHandler:)

Requests a notification after the system completes all the specified changes.

```
func waitForChanges(below itemIdentifier: NSFileProviderItemIdentifier, completionHandler: @escaping @Sendable ((any Error)?) -> Void)
```

## Parameters

`itemIdentifier`

The item’s identifier.

`completionHandler`

A block that the system calls after all the changes are complete. The block takes the following parameters:

- `error`: If an error occurs, this object contains information about the error; otherwise, it’s `nil`.

## Discussion

> Important:
> You can call this method from synchronous code using a completion handler, as shown on this page, or you can call it as an asynchronous method that has the following declaration:
> 
> ```swift
> func waitForChanges(below itemIdentifier: NSFileProviderItemIdentifier) async throws
> ```
> 
> For information about concurrency and asynchronous code in Swift, see <doc://com.apple.documentation/documentation/Swift/calling-objective-c-apis-asynchronously>.

This method waits for all the changes to the item’s descendants to complete before calling the completion handler. If an error occurs during this process, the system immediately passes the error to the completion handler, and you can’t assume all the changes have completed.

> Note:
> The system doesn’t wait for changes to the item specified by the `itemIdentifier` parameter. It only waits for changes to the item’s children. As a result, you can use this method inside a call to ``doc://com.apple.fileprovider/documentation/FileProvider/NSFileProviderReplicatedExtension/modifyItem(_:baseVersion:changedFields:contents:options:request:completionHandler:)``.

If the `itemIdentifier` property doesn’t refer to a directory, this method immediately calls the completion handler.

---

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)