---
title: "reparentItem(withIdentifier:toParentItemWithIdentifier:newName:completionHandler:)"
framework: fileprovider
role: symbol
role_heading: Instance Method
path: "fileprovider/nsfileproviderextension/reparentitem(withidentifier:toparentitemwithidentifier:newname:completionhandler:)"
---

# reparentItem(withIdentifier:toParentItemWithIdentifier:newName:completionHandler:)

Moves the specified item into the given parent directory.

## Declaration

```swift
func reparentItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, toParentItemWithIdentifier parentItemIdentifier: NSFileProviderItemIdentifier, newName: String?, completionHandler: @escaping @Sendable (NSFileProviderItem?, (any Error)?) -> Void)
```

```swift
func reparentItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, toParentItemWithIdentifier parentItemIdentifier: NSFileProviderItemIdentifier, newName: String?) async throws -> NSFileProviderItem
```

## Parameters

- `itemIdentifier`: The item’s persistent identifier.
- `parentItemIdentifier`: The persistent identifier for the new parent directory.
- `newName`: The new name of the file or directory, including the file extension.
- `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 reparentItem(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, toParentItemWithIdentifier parentItemIdentifier: NSFileProviderItemIdentifier, newName: String?) 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 moves a document or directory. Override this method to make any necessary local changes to the item and both its old and new parents. 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 reparentedItem instance that you pass to the completion handler should match the item’s old file provider item, with only one change: set the parentItemIdentifier property to the value passed to the parentItemIdentifier parameter. The user’s ability to rename an item is controlled by the item’s allowsRenaming 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)
- [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)
- [untrashItem(withIdentifier:toParentItemIdentifier:completionHandler:)](fileprovider/nsfileproviderextension/untrashitem(withidentifier:toparentitemidentifier:completionhandler:).md)
