0

Core Data オブジェクトのコレクションを (おそらく JSON に) シリアル化することを検討しており、件名について読んでいます。iOS ユーザーがデータを簡単にエクスポートおよび再インポートできるようにする手段として、JSON データをシリアライズ/デシリアライズする可能性があります。これは、同じデバイスでのバックアップと復元、またはまったく新しいデバイスへのデータのインポートの場合です。

この時点での私の主な質問は、インポート中に既存のデータの識別をどのように処理するかです。ストアに既に存在するオブジェクトを再インポートする場合、理想的にはそれらを更新したいと思います。同様に、インポートに含まれていない既存のデータはそのままにしておきたいと思います。この状況でのベストプラクティスは何ですか? オブジェクトが等しいかどうかを判断するときに、作成時に各 NSManagedObject に一意の ID を割り当て、この ID を比較する必要がありますか?

各 NSManagedObject には objectID が割り当てられていることは承知していますが、エクスポートされたデータが完全に別のデバイスにインポートされる可能性があることを考えると、これに頼ることができるかどうかは完全にはわかりません (objectID が衝突する可能性が高いか、より可能性が高いのは、 object には、作成時に新しい objectID が割り当てられます)。

4

1 に答える 1

1

インポート中に既存のデータの識別を処理するにはどうすればよいですか?

各アイテムに独自の一意の識別子を割り当てて、他のアーキテクチャでもインポート/同期/エクスポートが可能になるようにします (バージョン情報も含める必要がある場合があります)。これにより、デバイス間でのオブジェクトの識別が可能になります。

他のデバイスにエクスポートする場合、objectID に依存することはできません。

特定のオブジェクト ID (こちらを参照)を持つ管理対象オブジェクトを作成する方法はありません。これにより、インポート/同期/エクスポートに使用する独自の識別子を割り当てることを避けることができなくなります (DB ファイル全体を他のデバイス)。

CoreData での一意化 (主キー) は簡単ではなく、正しく行わないとパフォーマンスに影響を与える可能性があることに注意してください。

于 2013-03-30T15:24:32.343 に答える