---
title: "untrashItem(withIdentifier:toParentItemIdentifier:completionHandler:)"
framework: fileprovider
role: symbol
role_heading: Instance Method
path: "fileprovider/nsfileproviderextension/untrashitem(withidentifier:toparentitemidentifier:completionhandler:)"
---

# untrashItem(withIdentifier:toParentItemIdentifier:completionHandler:)

Moves an item out of the trash.

## Declaration

```swift
func untrashItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, toParentItemIdentifier parentItemIdentifier: NSFileProviderItemIdentifier?, completionHandler: @escaping @Sendable (NSFileProviderItem?, (any Error)?) -> Void)
```

```swift
func untrashItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, toParentItemIdentifier parentItemIdentifier: NSFileProviderItemIdentifier?) async throws -> NSFileProviderItem
```

## Parameters

- `itemIdentifier`: The item’s persistent identifier.
- `parentItemIdentifier`: The persistent identifier for the new parent directory, or nil.
- `completionHandler`: A block that takes the following parameters:

## Discussion

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: func untrashItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, toParentItemIdentifier parentItemIdentifier: NSFileProviderItemIdentifier?) async throws -> NSFileProviderItem For information about concurrency and asynchronous code in Swift, see Calling Objective-C APIs Asynchronously. This method is called when the user removes a document or directory from the trash. Override this method to make any necessary local changes to remove the item from the trash, including updates to the working set. Your implementation should return immediately. Call the completion handler before performing any network activity or other long-running tasks. Defer these tasks to the background. The untrashedItem instance that you pass to the completion handler should match the item’s old file provider item, with only one change: set the item’s isTrashed property to false. If the parentItemIdentifier parameter is not nil, move the item to the specified parent. Otherwise, return it to its previous location (before being trashed). Undo any other changes that were made when the item was trashed. The user’s ability to remove an item from the trash is controlled by the new parent directory’s allowsAddingSubItems capability.

## See Also

### Handling actions

- [Providing support for user-driven actions](fileprovider/providing-support-for-user-driven-actions.md)
- [createDirectory(withName:inParentItemIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/createdirectory(withname:inparentitemidentifier:completionhandler:).md)
- [deleteItem(withIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/deleteitem(withidentifier:completionhandler:).md)
- [importDocument(at:toParentItemIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/importdocument(at:toparentitemidentifier:completionhandler:).md)
- [renameItem(withIdentifier:toName:completionHandler:)](fileprovider/nsfileproviderextension/renameitem(withidentifier:toname:completionhandler:).md)
- [reparentItem(withIdentifier:toParentItemWithIdentifier:newName:completionHandler:)](fileprovider/nsfileproviderextension/reparentitem(withidentifier:toparentitemwithidentifier:newname:completionhandler:).md)
- [setFavoriteRank(_:forItemIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/setfavoriterank(_:foritemidentifier:completionhandler:).md)
- [setLastUsedDate(_:forItemIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/setlastuseddate(_:foritemidentifier:completionhandler:).md)
- [setTagData(_:forItemIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/settagdata(_:foritemidentifier:completionhandler:).md)
- [trashItem(withIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/trashitem(withidentifier:completionhandler:).md)
