Repolode
JohnEstropia

JohnEstropia/CoreStore

iOS、macOS、watchOS、tvOSアプリ向けに、AppleのCore Dataを型安全かつ並行処理に安全なAPIでラップするSwiftライブラリ。

スター
4,048
フォーク
257
未解決の Issue
98
最終コミット
先月

これは何?

CoreStoreは、AppleのCore DataフレームワークをラップするSwiftライブラリです。NSManagedObjectContext、NSFetchedResultsController、KVOにまつわる定型コードの多くを置き換え、データの取得、クエリ、保存、監視を行うための高水準なAPIを提供します。

書き込みはすべてシリアルなトランザクション(非同期、同期、またはunsafe)を介して行われ、メインコンテキストは読み取り専用のまま保たれます。.xcdatamodeldファイルの代わりに、CoreStoreObjectと型付きの@Fieldプロパティを使ってSwiftだけでモデルを定義でき、バージョンチェーンに基づいて段階的なマイグレーションを実行できます。CombineのPublisherとSwiftUIのプロパティラッパーも用意されています。

Swift 5.9に対応し、iOS 16以降、macOS 13以降、watchOS 9以降、tvOS 16以降を対象としています。CocoaPods、Carthage、Swift Package Managerからインストールできます。

主な機能

  • 01すべての書き込みをシリアルトランザクションで実行し、メインコンテキストを読み取り専用に保ちます。
  • 02CoreStoreObjectを使い、.xcdatamodeldファイルなしでSwift上に型安全なモデルを定義できます。
  • 03モデルバージョンのマイグレーションチェーンに基づいて、段階的なマイグレーションを実行できます。
  • 04where、orderBy、集計句を使える、流暢なFetch・クエリAPIを提供します。
  • 05リストとオブジェクトを監視でき、差分更新に対応したリストも利用できます。
  • 06CombineのPublisherとSwiftUIのプロパティラッパーを利用できます。

ユースケース

  • 書き込み時の並行処理をより安全にしたい、Core Dataを使うiOSアプリの開発。
  • Xcodeのモデルファイルではなく、SwiftコードだけでCore Dataモデルを定義する。
  • 差分スナップショットを使い、永続化データに応じてUITableViewやUICollectionViewを更新する。
  • リリース済みの多くのアプリバージョンにまたがるスキーママイグレーションを管理する。

使う前に知っておきたいこと

  • Swift 5.9 と新しいOSバージョンが必要です:iOS 16.0以降、macOS 13.0以降、watchOS 9.0以降、tvOS 16.0以降。

収録されている特集

トピック

よくある質問

CoreStore とは?
iOS、macOS、watchOS、tvOSアプリ向けに、AppleのCore Dataを型安全かつ並行処理に安全なAPIでラップするSwiftライブラリ。 CoreStoreは、AppleのCore DataフレームワークをラップするSwiftライブラリです。NSManagedObjectContext、NSFetchedResultsController、KVOにまつわる定型コードの多くを置き換え、データの取得、クエリ、保存、監視を行うための高水準なAPIを提供します。
CoreStore は無料で使えますか?ライセンスは?
CoreStore は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
CoreStore は今もメンテナンスされていますか?
半年以内に更新あり。CoreStore の最終コミットは 2026年10月2日 です。
CoreStore は何に使えますか?
書き込み時の並行処理をより安全にしたい、Core Dataを使うiOSアプリの開発。 Xcodeのモデルファイルではなく、SwiftコードだけでCore Dataモデルを定義する。 差分スナップショットを使い、永続化データに応じてUITableViewやUICollectionViewを更新する。 リリース済みの多くのアプリバージョンにまたがるスキーママイグレーションを管理する。
CoreStore はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/JohnEstropia/CoreStore

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト