---
title: "enumerateChanges(startingAt:for:)"
framework: ContactProvider
role: symbol
role_heading: Instance Method
platforms: [iOS 18.0+, iPadOS 18.0+]
path: "contactprovider/contactitemenumerator/enumeratechanges(startingat:for:)"
---

# enumerateChanges(startingAt:for:)

Enumerates items changed since the last sync.

## Declaration

```swift
func enumerateChanges(startingAt syncAnchor: ContactItemSyncAnchor, for observer: any ContactItemChangeObserver) async
```

## Parameters

- `syncAnchor`: The sync anchor to enumerate changed items from.
- `observer`: The system observer that receives the change items and enumeration state.

## Discussion

Discussion The system calls enumerateChanges(startingAt:for:) for each batch of changed items to enumerate. After enumerating each batch of changed items, your implementation calls didFinishEnumeratingChanges(upTo:moreComing:) . Your implementation can enumerate items in any order, but that order must be deterministic and resumable.

## See Also

### Enumerating item changes

- [ContactItemSyncAnchor](contactprovider/contactitemsyncanchor.md)
- [ContactItemChangeObserver](contactprovider/contactitemchangeobserver.md)
