1

UIDocumentiCloud に保存されている の競合する 2 つ以上のバージョンをマージするためのオプションを理解できません。ドキュメントの競合を検出した後、私は現在removeOtherVersionsOfItemAtURL、単にドキュメントのデータの最新バージョンを保持するために使用しています。ただし、競合するドキュメントのマージをサポートしたいと思います。

私が見つけた唯一のリソースとチュートリアルは、マージのために Core Data と永続ストアを参照しており、例では などを使用SQLiteしていましたが、私は使用していません。私の場合、各ドキュメントは個別のファイルです。

背景: 私のアプリはカスタムNSObjectサブクラス (関連するプロパティを含む) を使用してデータを保存します。それらは、 内で( NSCoding+を使用して) エンコードおよびデコードされます。iCloud で完全に動作するようにアプリをセットアップしました。ファイルをユビキタスにしたり、その逆にしたり、編集したり削除したりできます。NSKeyedArchiver/NSKeyedUnarchiverUIDocument

conflicted のマージに関して何ができるかを理解するのを手伝ってくださいUIDocument's!

4

1 に答える 1

4

NSFileVersionファイルの競合するバージョンを取得するために使用します。競合状態になると、 は「最新」とは見なされないバージョンのインスタンスを+unresolvedConflictVersionsOfItemAtURL提供します。その後、 のプロパティをNSFileVersion使用して、これらの競合するバージョンのコンテンツを取得できます。URLNSFileVersion

これで、ドキュメントの複数のバージョンができました。競合をどのように解決するかはあなた次第です。競合しているバージョンを調べて、ドキュメント構造にとって意味のある方法で変更をマージします。コードで解決できる場合は、現在のバージョンに最終的なマージされたバージョンが含まれるまで、おそらく競合するバージョンの 1 つからデータの一部を取得して現在のバージョンにコピーします。

それが完了したら、ドキュメントを保存し、競合するバージョン ( removeOtherVersionsOfItemAtURL:error:) を削除して、現在のファイル バージョンを解決済みとしてマークします。removeAndReturnError:古いバージョンを実際に削除するために使用することもできます。

これに関する詳細は、Apple のドキュメント バージョンの競合を解決するためのガイドに記載されています。

于 2013-02-14T23:36:05.037 に答える