finds.dev← search

// the find

nofelmahmood/Seam

★ 667 · Swift · MIT · updated Jan 2018

Seamless CloudKit Sync with CoreData

Seam bridges CoreData and CloudKit by implementing a custom NSPersistentStore that transparently syncs your SQLite-backed CoreData stack to a CloudKit private database. It handles the CoreData-to-CKRecord mapping, conflict resolution, and push notification-triggered syncs. Aimed at iOS/macOS developers who want CloudKit sync without rewriting their CoreData stack.

Plugs in as a store type rather than requiring you to restructure your stack — adding one line to your persistent store coordinator setup is the entire integration cost. The to-many relationship strategy (store to-one on CloudKit, reconstruct to-many via queries) is a pragmatic workaround for a real CloudKit limitation. CKAsset and CLLocation support via value transformers is a thoughtful touch that covers the two types CloudKit doesn't map directly. The test suite covers store fetching, relationship translation, and change recording as separate concerns.

Dead project — last commit was January 2018, meaning it predates Swift 4, iOS 12, and everything Apple has done with CloudKit since. Apple shipped NSPersistentCloudKitContainer in iOS 13, which is the official answer to this exact problem and is actively maintained. The Swift 2/3 era API style (NSNotificationCenter, addObserver with selector strings) will require migration work just to compile. No support for shared databases or public databases — private only, which rules out a large class of sync use cases.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →