私はiOSプログラミングに不慣れで、プロジェクトが進行中であり、それに伴ってiOSの新機能を常に学び、それがCoreDataにもたらされました。基本的なチュートリアルとその説明を読みました。しかし悲しいことに、彼らは複雑なデータベースの作成をうまくカバーしていませんでした。私の目標は、サーバーから約20MBのXMLファイルであるデータファイルをダウンロードするアプリケーションを作成することです。そして、ユーザーが対話できるように、それらからアプリのCoreDataデータベースにデータをロードします。
構築しようとしているスキーマを説明しようと思います
各ファイルは、タイプAのエンティティとしてデータベースにロードされます。各エンティティAには、いくつかのプロパティとエンティティBの配列があります。(1対多の関係)各エンティティBには、いくつかのプロパティとエンティティCの配列があります(1対多の関係)。 )。
私のXML構造は次のようなものです
<a>
<set of b's>
<b1>
<set of c's>
<c1>
<c2>
...
<cn>
</set of c's>
</b1>
<b2>
....
<bn>
</set of b's>
</a>
エンティティAは単にインポートされたさまざまなファイルを表すため、サーバー上で使用可能なデータファイルのリストを作成するときに作成されます。次に、ファイルをダウンロードして解析し、そのデータをデータベースにロードする予定です。パーサーを実行すると、最初にエンティティBの作成に必要なすべてのデータを取得し、次にエンティティCのデータを保持する辞書の配列を作成するか、エンティティをBのセットに挿入できます。
問題が発生しているのは、エンティティをMOCに挿入する方法と保存する方法です。つまり、すべての種類のエンティティに同じMOCを使用して、変更を保存する必要がありますか?または、たとえば、「B」をAのMOCに挿入し、次に「C」をBのMOCに挿入してから、最初にBのMOCに変更を保存し、次にAのMOCに保存する必要がありますか?
私のパーサーはデータをチャンクで読み取るので、現在のチャンクからすべてのデータを追加して保存し、次のチャンクの読み取りを開始できることを通知するイベントが必要です。
私はそこでどんな助けにも感謝します。