Agent Skills: iOS Persistence

Implement local persistence with SwiftData, Core Data, and Keychain. Use when setting up SwiftData models, Core Data stacks, or local persistence in iOS. (triggers: **/*.xcdatamodeld, **/*Model.swift, PersistentContainer, FetchRequest, ManagedObject, Query, ModelContainer, Repository)

UncategorizedID: hoangnguyen0403/agent-skills-standard/ios-persistence

Install this agent skill to your local

pnpm dlx add-skill https://github.com/HoangNguyen0403/agent-skills-standard/tree/HEAD/skills/ios/ios-persistence

Skill Files

Browse the full folder contents for ios-persistence.

Download Skill

Loading file tree…

skills/ios/ios-persistence/SKILL.md

Skill Metadata

Name
ios-persistence
Description
"Implement local persistence with SwiftData, Core Data, and Keychain. Use when setting up SwiftData models, Core Data stacks, or local persistence in iOS. (triggers: **/*.xcdatamodeld, **/*Model.swift, PersistentContainer, FetchRequest, ManagedObject, Query, ModelContainer, Repository)"

iOS Persistence

Priority: P0

Implementation Workflow

  1. Choose storage tier — SwiftData for iOS 17+, Core Data for legacy, Keychain for secrets, UserDefaults for flags only.
  2. Define models — Use @Model macro (SwiftData) or .xcdatamodeld (Core Data).
  3. Configure container — Use @MainActor for ModelContainer (SwiftData) or NSPersistentContainer (Core Data).
  4. Perform background writes — Use newBackgroundContext() (Core Data) to avoid UI lag; never do heavy I/O on viewContext.
  5. Secure sensitive data — Use Keychain for tokens and PII; never store in UserDefaults.

See SwiftData and Core Data implementation examples

Anti-Patterns

  • ❌ Heavy I/O on viewContext — use private background contexts
  • ❌ String-based predicates — use KeyPaths or generated helpers
  • ❌ Missing merge strategy — set mergePolicy explicitly (e.g., mergeByPropertyObjectTrump)

References