2016-03-21 23 views
0

私は書籍の特定のalmirahのバックアップを作成しなければならないアプリケーションに取り組んでいます&後で復元する必要があります。コアデータを持つ複数の永続ストア

複数のalmirahsがあります&各almirahには複数の書籍があります&各書籍には複数の章があります&などです。コアデータでは、データを保存するために単一の永続ストアを使用しています。エンティティは1対多の関係を持っています&多くの種類から多くの種類の関係。

アプリの1つの要件は、almirahsをサーバーと同期させることです。ユーザーはalmirahを更新できます。&質問など

サーバーにデータを同期する前に、私はすべての関係などを含めてサーバーと同期する必要がある特定のalmirahのバックアップを取る必要があります。後で必要に応じてalmirah。

複数のユーザーが同じalmirah &を同期することができるため、同期後にデータが同期前と同じにならないため、復元が必要です。

私はこのSOのリンクを読んでいますが、あまり進んでいません。どんな助けもありがとう。 How can I duplicate, or copy a Core Data Managed Object?

私は複数の永続ストアを使用しますか?

答えて

0

データストア全体にチェックポイントを保存するだけで、コアデータ以外のデータを処理する方が望ましいので、データストア内のアイテムをコピーしたくない場合は、データストア全体を単一のエンティティ。あなたは、例えば、フォルダworkingv1v2(あなたはバージョンを管理する方法を決定することができます)のために必要があると思いますので、あなたは、別のフォルダにデータストアの各「コピー」を格納することができ、これを行うには

。コピーする場合はworkingのバージョンを保存し、次にNSFileManagerを使用してworkingフォルダ内のすべてのファイルをv3にコピーします。

データストアはおそらく複数のファイルとして保存されるため、単に.sqliteファイルを単独でコピーしようとしないでください。

古いバージョンを復元するには、現在のストアからすべてのコンテキストと管理対象オブジェクトを破棄し、復元するバージョンをコピーして、現在のworkingフォルダを置き換えます。

+0

これを処理する簡単な方法はありません。つまり、エンティティから単一のレコードをバックアップして後でリストアすることはできないのですか?Sqlのように、SQLクエリを使用して単一レコードのバックアップをとることができますが、後でバックアップされたデータに基づいて更新できますか? – stackNeverFlow

+0

独自のスキームを使用して、必要に応じて単一の管理オブジェクトの詳細をすべてコピーすることができます。コアデータはそれを念頭に置いて設計されていません – Wain

関連する問題