<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.4.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ImageCaptureCore",
  "identifier" : "/documentation/ImageCaptureCore/ICCameraDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ImageCaptureCore"
    ],
    "preciseIdentifier" : "c:objc(cs)ICCameraDevice"
  },
  "title" : "ICCameraDevice"
}
-->

# ICCameraDevice

An object that represents a camera.

```
class ICCameraDevice
```

## Topics

### Reading Files

[`contents`](/documentation/ImageCaptureCore/ICCameraDevice/contents)

All image, movie, and audio files stored on the camera, in an order that reflects the camera’s storage folder structure.

[`mediaFiles`](/documentation/ImageCaptureCore/ICCameraDevice/mediaFiles)

All image, movie and audio files stored on the camera, without regard to the camera’s storage folder structure.

[`contentCatalogPercentCompleted`](/documentation/ImageCaptureCore/ICCameraDevice/contentCatalogPercentCompleted)

The percentage of the camera’s content that has been catalogued.

[`files(ofType:)`](/documentation/ImageCaptureCore/ICCameraDevice/files(ofType:))

Returns an array of files of the selected type on the camera.

[`requestReadData(from:atOffset:length:readDelegate:didReadDataSelector:contextInfo:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestReadData(from:atOffset:length:readDelegate:didReadDataSelector:contextInfo:))

Asynchronously reads data of a specified length from a specified offset.

### Uploading Files

[`ICUploadOption`](/documentation/ImageCaptureCore/ICUploadOption)

An option for uploading a file to the camera.

[`requestUploadFile(_:options:uploadDelegate:didUploadSelector:contextInfo:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestUploadFile(_:options:uploadDelegate:didUploadSelector:contextInfo:))

Uploads a file to the camera.

### Downloading Files

[`ICDownloadOption`](/documentation/ImageCaptureCore/ICDownloadOption)

An option for downloading a file from the camera.

[`cancelDownload()`](/documentation/ImageCaptureCore/ICCameraDevice/cancelDownload())

Cancels a download from the camera.

[`requestDownloadFile(_:options:downloadDelegate:didDownloadSelector:contextInfo:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestDownloadFile(_:options:downloadDelegate:didDownloadSelector:contextInfo:))

Downloads a file from the camera.

[`ICCameraDeviceDownloadDelegate`](/documentation/ImageCaptureCore/ICCameraDeviceDownloadDelegate)

Methods for managing camera file downloads.

### Deleting Files

[`isLocked`](/documentation/ImageCaptureCore/ICCameraDevice/isLocked)

A Boolean value indicating whether the device is locked, preventing deletion of any asset.

[`ICDeleteResult`](/documentation/ImageCaptureCore/ICDeleteResult)

The result of a deletion request.

[`ICDeleteError`](/documentation/ImageCaptureCore/ICDeleteError)

An error resulting from a deletion request.

[`requestDeleteFiles(_:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestDeleteFiles(_:))

Deletes files from the camera.

[`requestDeleteFiles(_:deleteFailed:completion:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestDeleteFiles(_:deleteFailed:completion:))

Deletes files from the camera, with the ability to catch failures and execute a completion block.

[`cancelDelete()`](/documentation/ImageCaptureCore/ICCameraDevice/cancelDelete())

Cancels the current delete operation.

### Taking Pictures

[`tetheredCaptureEnabled`](/documentation/ImageCaptureCore/ICCameraDevice/tetheredCaptureEnabled)

A Boolean value indicating whether tethered capture is enabled on the camera.

[`ptpEventHandler`](/documentation/ImageCaptureCore/ICCameraDevice/ptpEventHandler)

A closure for handling PTP event packets.

[`requestEnableTethering()`](/documentation/ImageCaptureCore/ICCameraDevice/requestEnableTethering())

Enables tethered capture if the camera has the capability to take pictures while connected.

[`requestTakePicture()`](/documentation/ImageCaptureCore/ICCameraDevice/requestTakePicture())

Captures a new image using the camera.

[`requestSendPTPCommand(_:outData:sendCommandDelegate:didSendCommand:contextInfo:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestSendPTPCommand(_:outData:sendCommandDelegate:didSendCommand:contextInfo:))

Sends a Picture Transfer Protocol (PTP) command to a camera asynchronously.

[`requestSendPTPCommand(_:outData:completion:)`](/documentation/ImageCaptureCore/ICCameraDevice/requestSendPTPCommand(_:outData:completion:))

Sends a Picture Transfer Protocol (PTP) command to a camera asynchronously.

[`requestDisableTethering()`](/documentation/ImageCaptureCore/ICCameraDevice/requestDisableTethering())

Disables tethered capture on the camera.

### Inspecting the Battery Charge Level

[`batteryLevelAvailable`](/documentation/ImageCaptureCore/ICCameraDevice/batteryLevelAvailable)

A Boolean value that indicates whether the battery charge level is available.

[`batteryLevel`](/documentation/ImageCaptureCore/ICCameraDevice/batteryLevel)

The battery charge level.

### Synchronizing the Clock

[`timeOffset`](/documentation/ImageCaptureCore/ICCameraDevice/timeOffset)

The time offset, in seconds, between the camera’s clock and the computer’s clock.

[`requestSyncClock()`](/documentation/ImageCaptureCore/ICCameraDevice/requestSyncClock())

Synchronizes the camera’s clock with the computer’s clock.

### Detecting Apple Devices

[`isAccessRestrictedAppleDevice`](/documentation/ImageCaptureCore/ICCameraDevice/isAccessRestrictedAppleDevice)

A Boolean value indicating whether the device is an Apple device, passcode-locked, and connected to an untrusted host.

[`iCloudPhotosEnabled`](/documentation/ImageCaptureCore/ICCameraDevice/iCloudPhotosEnabled)

A Boolean value indicating whether the iCloud Photo Library is enabled on the device.

### Detecting Mass Storage Devices

[`mountPoint`](/documentation/ImageCaptureCore/ICCameraDevice/mountPoint)

The file system mount point for a camera using the mass storage transport type.

### Removing a Device

[`isEjectable`](/documentation/ImageCaptureCore/ICCameraDevice/isEjectable)

A Boolean value indicating whether the device can be ‘soft’ removed or disconnected.



---

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)