---
title: "decodeTopLevelObject(of:forKey:)"
framework: foundation
role: symbol
role_heading: Instance Method
path: "foundation/nscoder/decodetoplevelobject(of:forkey:)-5lnnn"
---

# decodeTopLevelObject(of:forKey:)

Decode an object as one of several expected types, failing if the archived type does not match.

## Declaration

```swift
@nonobjc func decodeTopLevelObject(of classes: [AnyClass]?, forKey key: String) throws -> Any?
```

## Parameters

- `classes`: An array of expected classes that the object being decoded should match at least one of.
- `key`: The key indicating the member to decode.

## Return Value

Return Value The decoded object, or nil if decoding fails.

## Discussion

Discussion This method is equivalent to decodeObject(of:forKey:), but allows you to specify a set of classes that the decoded object can match. If requiresSecureCoding is true, the decoded object’s class must be a member of the classes parameter, or a sublcass of a member.

## See Also

### Decoding Top-Level Objects

- [decodeObject(of:forKey:)](foundation/nscoder/decodeobject(of:forkey:)-7tmft.md)
- [decodeObject(of:forKey:)](foundation/nscoder/decodeobject(of:forkey:)-roif.md)
- [decodeTopLevelObject()](foundation/nscoder/decodetoplevelobject().md)
- [decodeTopLevelObject(forKey:)](foundation/nscoder/decodetoplevelobject(forkey:).md)
- [decodeTopLevelObject(of:forKey:)](foundation/nscoder/decodetoplevelobject(of:forkey:)-3w6pd.md)
