<!--
{
  "availability" : [
    "iOS: 12.0.0 -",
    "iPadOS: 12.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.14.0 -",
    "tvOS: 12.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 5.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Foundation",
  "identifier" : "/documentation/Foundation/NSSecureUnarchiveFromDataTransformer",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "c:objc(cs)NSSecureUnarchiveFromDataTransformer"
  },
  "title" : "NSSecureUnarchiveFromDataTransformer"
}
-->

# NSSecureUnarchiveFromDataTransformer

A value transformer that converts data to and from classes that support secure coding.

```
class NSSecureUnarchiveFromDataTransformer
```

## Overview

This class provides a default [`ValueTransformer`](/documentation/Foundation/ValueTransformer) implementation for secure decoding. This class attempts to decode data into the classes listed within [`allowedTopLevelClasses`](/documentation/Foundation/NSSecureUnarchiveFromDataTransformer/allowedTopLevelClasses), which includes [`NSArray`](/documentation/Foundation/NSArray), [`NSDictionary`](/documentation/Foundation/NSDictionary), [`NSSet`](/documentation/Foundation/NSSet), [`NSString`](/documentation/Foundation/NSString), [`NSNumber`](/documentation/Foundation/NSNumber), [`NSDate`](/documentation/Foundation/NSDate), [`NSData`](/documentation/Foundation/NSData), [`NSURL`](/documentation/Foundation/NSURL), [`NSUUID`](/documentation/Foundation/NSUUID), and [`NSNull`](/documentation/Foundation/NSNull).

To archive or unarchive other classes that support [`NSSecureCoding`](/documentation/Foundation/NSSecureCoding), create a subclass and override [`allowedTopLevelClasses`](/documentation/Foundation/NSSecureUnarchiveFromDataTransformer/allowedTopLevelClasses) to list the classes to transform.

To use [`NSSecureUnarchiveFromDataTransformer`](/documentation/Foundation/NSSecureUnarchiveFromDataTransformer) with <doc://com.apple.documentation/documentation/CoreData>, use the name of this class, or the name of a subclass you implement, as the name of the transformer for an entity’s attribute within a Core Data Model. If you use your own transformer subclass, register it with your app before intializing your persistent container with Core Data.

For an example of subclassing [`NSSecureUnarchiveFromDataTransformer`](/documentation/Foundation/NSSecureUnarchiveFromDataTransformer), see <doc://com.apple.documentation/documentation/CoreData/handling-different-data-types-in-core-data>, which has a `ColorToDataTransformer` class that transforms <doc://com.apple.documentation/documentation/UIKit/UIColor> to [`NSData`](/documentation/Foundation/NSData) and the reverse, to support archiving instances of <doc://com.apple.documentation/documentation/UIKit/UIColor>.

## Topics

### Getting Information About a Transformer

[`allowedTopLevelClasses`](/documentation/Foundation/NSSecureUnarchiveFromDataTransformer/allowedTopLevelClasses)

A list of allowed classes the top-level object in an archive must conform to, for encoding and decoding.



---

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)