---
title: "decodeTopLevelObjectOfClasses:forKey:error:"
framework: foundation
role: symbol
role_heading: Instance Method
path: "foundation/nscoder/decodetoplevelobjectofclasses:forkey:error:"
---

# decodeTopLevelObjectOfClasses:forKey:error:

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

## Declaration

```occ
- (id) decodeTopLevelObjectOfClasses:(NSSet<Class> *) classes forKey:(NSString *) key error:(NSError **) error;
```

## Parameters

- `classes`: A set of expected classes that the object being decoded should match at least one of.
- `key`: The archive key indicating the member to decode.
- `error`: On return, an doc://com.apple.foundation/documentation/Foundation/NSError indicating why decoding failed, or nil if no error occurred.

## 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

- [decodeTopLevelObjectOfClass:forKey:error:](foundation/nscoder/decodetoplevelobjectofclass:forkey:error:.md)
- [decodeTopLevelObjectAndReturnError:](foundation/nscoder/decodetoplevelobjectandreturnerror:.md)
- [decodeTopLevelObjectForKey:error:](foundation/nscoder/decodetoplevelobjectforkey:error:.md)
