<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 10.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PhotoKit",
  "identifier" : "/documentation/Photos/PHAssetChangeRequest",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Photos"
    ],
    "preciseIdentifier" : "c:objc(cs)PHAssetChangeRequest"
  },
  "title" : "PHAssetChangeRequest"
}
-->

# PHAssetChangeRequest

A request to create, delete, change metadata for, or edit the content of a Photos asset, for use in a photo library change block.

```
class PHAssetChangeRequest
```

## Overview

You use the [`PHAssetChangeRequest`](/documentation/Photos/PHAssetChangeRequest) class to request changes for [`PHAsset`](/documentation/Photos/PHAsset) objects. To make changes to assets in the Photos library, create a change request by using the appropriate class method for the change you want to perform.

- Call one of the methods listed in Adding New Assets to create a new asset from an image or video file.
- Call the [`deleteAssets(_:)`](/documentation/Photos/PHAssetChangeRequest/deleteAssets(_:)) method to delete existing assets.
- Call the [`init(for:)`](/documentation/Photos/PHAssetChangeRequest/init(for:)) method to modify an asset’s content or metadata.

A change request for creating or modifying an asset works like a mutable version of the asset object. Use the change request’s properties to request changes to the corresponding properties of the asset itself. For example, the following code uses the [`isFavorite`](/documentation/Photos/PHAssetChangeRequest/isFavorite) property of a change request to mark an asset as a favorite:

```objc
- (void)toggleFavoriteForAsset:(PHAsset *)asset {
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        // Create a change request from the asset to be modified.
        PHAssetChangeRequest *request = [PHAssetChangeRequest changeRequestForAsset:asset];
        // Set a property of the request to change the asset itself.
        request.favorite = !asset.favorite;
    } completionHandler:^(BOOL success, NSError *error) {
        NSLog(@"Finished updating asset. %@", (success ? @"Success." : error));
    }];
}
```

After Photos runs the change block and calls your completion handler, the asset’s state reflects the changes that you requested in the block.

If you create or use a change request object outside a photo library change block, Photos raises an Objective-C exception. For details on change blocks, see [`PHPhotoLibrary`](/documentation/Photos/PHPhotoLibrary).

## Topics

### Adding New Assets

[`creationRequestForAsset(from:)`](/documentation/Photos/PHAssetChangeRequest/creationRequestForAsset(from:))

Creates a request for adding a new image asset to the Photos library.

[`creationRequestForAssetFromImage(atFileURL:)`](/documentation/Photos/PHAssetChangeRequest/creationRequestForAssetFromImage(atFileURL:))

Creates a request for adding a new image asset to the Photos library, using the image file at the specified URL.

[`creationRequestForAssetFromVideo(atFileURL:)`](/documentation/Photos/PHAssetChangeRequest/creationRequestForAssetFromVideo(atFileURL:))

Creates a request for adding a new video asset to the Photos library, using the video file at the specified URL.

[`placeholderForCreatedAsset`](/documentation/Photos/PHAssetChangeRequest/placeholderForCreatedAsset)

A placeholder object for the asset that the change request creates.

### Deleting Assets

[`deleteAssets(_:)`](/documentation/Photos/PHAssetChangeRequest/deleteAssets(_:))

Requests that the specified assets be deleted.

### Modifying Assets

[`init(for:)`](/documentation/Photos/PHAssetChangeRequest/init(for:))

Creates a request for modifying the specified asset.

[`creationDate`](/documentation/Photos/PHAssetChangeRequest/creationDate)

The date and time at which the asset claims to have been originally created.

[`location`](/documentation/Photos/PHAssetChangeRequest/location)

The location information saved with the asset.

[`isFavorite`](/documentation/Photos/PHAssetChangeRequest/isFavorite)

A Boolean value that indicates whether the asset is marked as one of the user’s favorites.

[`isHidden`](/documentation/Photos/PHAssetChangeRequest/isHidden)

A Boolean value that indicates whether the asset is hidden in collections.

[`caption`](/documentation/Photos/PHAssetChangeRequest/caption)

An asset description to change to.
Set to nil or an empty string to clear the caption.

[`addKeyword(_:)`](/documentation/Photos/PHAssetChangeRequest/addKeyword(_:))

Add or remove a keyword associated with this asset
Adding a keyword that is already associated (or removing a keyword that is not) will be silently ignored

[`removeKeyword(_:)`](/documentation/Photos/PHAssetChangeRequest/removeKeyword(_:))

[`rating`](/documentation/Photos/PHAssetChangeRequest/rating)

The rating for this asset

[`setLivePhotoVideoPlaybackEnabled(_:)`](/documentation/Photos/PHAssetChangeRequest/setLivePhotoVideoPlaybackEnabled(_:))

Disable or enable the video part of a Live Photo so it just appears as a still image (disabled) or a Live Photo (enabled)

### Editing Asset Content

[`contentEditingOutput`](/documentation/Photos/PHAssetChangeRequest/contentEditingOutput)

The output of an asset content editing session.

[`revertAssetContentToOriginal()`](/documentation/Photos/PHAssetChangeRequest/revertAssetContentToOriginal())

Request to revert any edits made to the asset’s content.

[`revertAssetContent(to:)`](/documentation/Photos/PHAssetChangeRequest/revertAssetContent(to:))

Reverts the asset’s content to its original, choosing which original resource to use as the unadjusted base for all renders.



---

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)