Core Data Expert
Fast, production-oriented guidance for building correct, performant Core Data stacks and fixing common crashes.
Agent behavior contract (follow these rules)
- •Determine OS/deployment target when advice depends on availability (iOS 14+/17+ features, etc.).
- •Identify the context type before proposing fixes: view context (UI) vs background context (heavy work).
- •Recommend
NSManagedObjectIDfor cross-context/cross-task communication; never passNSManagedObjectinstances across contexts. - •Prefer lightweight migration when possible; use staged migration (iOS 17+) for complex changes.
- •When recommending batch operations, verify persistent history tracking is enabled (often required for UI updates).
- •For CloudKit integration, remind developers that Production schema is immutable.
- •Reference WWDC/external resources sparingly; prefer this skill’s
references/.
First 60 seconds (triage template)
- •Clarify the goal: setup, bugfix, migration, performance, CloudKit?
- •Collect minimal facts:
- •platform + deployment target
- •store type (SQLite / in-memory) and whether CloudKit is enabled
- •context involved (view vs background) and whether Swift Concurrency is in use
- •exact error message + stack trace/logs
- •Branch immediately:
- •threading/crash → focus on context confinement +
NSManagedObjectIDhandoff - •migration error → identify model versions + migration strategy
- •batch ops not updating UI → persistent history tracking + merge pipeline
- •threading/crash → focus on context confinement +
Routing map (pick the right reference fast)
- •Stack setup / merge policies / contexts →
references/stack-setup.md - •Saving patterns →
references/saving.md - •Fetch requests / list updates / aggregates →
references/fetch-requests.md - •Traditional threading (perform/performAndWait, object IDs) →
references/threading.md - •Swift Concurrency (async/await, actors, Sendable, DAOs) →
references/concurrency.md - •Batch insert/delete/update →
references/batch-operations.md - •Persistent history tracking + “batch ops not updating UI” →
references/persistent-history.md - •Model configuration (constraints, validation, derived/composite, transformables) →
references/model-configuration.md - •Schema migration (lightweight/staged/deferred) →
references/migration.md - •CloudKit integration & debugging →
references/cloudkit-integration.md - •Performance profiling & memory →
references/performance.md - •Testing patterns →
references/testing.md - •Terminology →
references/glossary.md
Common errors → next best move
- •“Failed to find a unique match for an NSEntityDescription” →
references/testing.md(sharedNSManagedObjectModel) - •
NSPersistentStoreIncompatibleVersionHashError→references/migration.md(versioning + migration) - •Cross-context/threading exceptions (e.g. delete/update from wrong context) →
references/threading.mdand/orreferences/concurrency.md(useNSManagedObjectID) - •Sendable / actor-isolation warnings around Core Data →
references/concurrency.md(don’t “paper over” with@unchecked Sendable) - •
NSMergeConflict/ constraint violations →references/model-configuration.md+references/stack-setup.md(constraints + merge policy) - •Batch operations not updating UI →
references/persistent-history.md+references/batch-operations.md - •CloudKit schema/sync issues →
references/cloudkit-integration.md - •Memory grows during fetch →
references/performance.md+references/fetch-requests.md
Verification checklist (when changing Core Data code)
- •Confirm the context matches the work (UI vs background).
- •Ensure
NSManagedObjectinstances never cross contexts; passNSManagedObjectIDinstead. - •If using batch ops, confirm persistent history tracking + merge pipeline.
- •If using constraints, confirm merge policy and conflict resolution strategy.
- •If performance-related, profile with Instruments and validate fetch batching/limits.
Reference files
- •
references/_index.md(navigation) - •
references/stack-setup.md - •
references/saving.md - •
references/fetch-requests.md - •
references/threading.md - •
references/concurrency.md - •
references/batch-operations.md - •
references/persistent-history.md - •
references/model-configuration.md - •
references/migration.md - •
references/cloudkit-integration.md - •
references/performance.md - •
references/testing.md - •
references/glossary.md