Core Data を使用して大量またはレコードを挿入する最良の方法を見つけようとしています。
私は2つのアプローチを試しましたが、より良い方法があるかどうか疑問に思っています。私が試した2つのシナリオは次のとおりです。
前提条件
挿入するデータの構造は次のとおりです。
- エンティティ: パッケージ、製品
- 関係:
- パッケージには 1 つ以上の製品を含めることができます
- 商品は 1 つのパッケージにのみ含めることができます
インポートするデータは JSON 形式で、プレーン テキスト ファイルです。すべてのパッケージのリスト (つまり、ID、名前のリスト) を含む 1 つのファイルと、パッケージごとの製品のリスト (つまり、パッケージ ID、製品 ID、製品名のリスト) を含む 1 つのファイルがあります。
シナリオ 1
Load the Packages' JSON into an NSArray
Load the Products' JSON into an NSArray
For each Package in Packages array
Create Package entity
Filter Products array using Package Id using NSPredicate
Create Product entity and associate with current Package
Save Managed Object Context
シナリオ 2
Load the Packages' JSON into an NSArray
Load the Products' JSON into an NSArray
// insert all Packages first
For each Package in Packages array
Create Package entity
Save Managed Object Context
// insert and associate all Products
For each Product in Products array
Fetch Packages with package id == current Product's package id
Create Product entity and associate it with the fetched Package
Save Managed Object Context
ストレージに大量のデータをロードするためのより良い戦略を知りたいです。
どちらも同期挿入であり、アプリをロックするため、2つの方法のいずれにもあまり満足していません。現在、非同期挿入の作成方法を読んでいますが、まだ完全には理解していません。