---
title: "containers(matching:)"
framework: contacts
role: symbol
role_heading: Instance Method
path: "contacts/cncontactstore/containers(matching:)"
---

# containers(matching:)

Fetches all containers matching the specified predicate.

## Declaration

```swift
func containers(matching predicate: NSPredicate?) throws -> [CNContainer]
```

## Parameters

- `predicate`: The predicate to use to fetch matching containers. Set this property to nil to match all containers.

## Return Value

Return Value An array of CNContainer objects that match the predicate. Discussion A container holds a collection of contacts, and a contact can be in only one container. CardDAV accounts usually have only one container of contacts. Exchange accounts may have multiple containers, where each container represents an Exchange folder. This method returns an empty array when no matching container is found. In case of an error this method returns nil. You should use only the predicates defined CNContainer class. Compound predicates are not supported. note: In Swift, this method returns a nonoptional result and is marked with the throws keyword to indicate that it throws an error in cases of failure. You call this method in a try expression and handle any errors in the catch clauses of a do statement, as described in Error Handling in The Swift Programming Language and About Imported Cocoa Error Parameters.

## See Also

### Fetching groups and containers

- [defaultContainerIdentifier()](contacts/cncontactstore/defaultcontaineridentifier().md)
- [groups(matching:)](contacts/cncontactstore/groups(matching:).md)
