2

ユーザーがアプリで iCloud を有効にすると、すべてのローカル ファイルを iCloud に移動する必要があります。ここでは、setUbiquitous:itemAtURL:destinationURL:error:各ファイルを移動するために使用します。問題は、(任意のローカル ファイルに対して) 同じファイル URL が iCloud に既に存在する場合、この方法は失敗することです。

私の質問は、iCloud バージョンを上書きするか、各ファイルのローカル バージョンを破棄できるように、どのファイルが新しいか (ローカルと iCloud) を判断するにはどうすればよいですか? または、どうにかして iOS にアップロードを強制し、iCloud でファイルの状態を競合状態に設定して、競合解決メソッドがこれを引き継いで処理できるようにすることはできますか?

4

1 に答える 1

2

FWIW、Apple の dox から、彼らは全か無かの iCloud アプローチを提案しています。つまり、ある時点で iCloud を有効にするかどうかをユーザーに尋ねてから、変更しないでください。

そうは言っても、あなたの状況では、ユーザーが iCloud を有効にした後、次の手順をお勧めします。

1) ユビキタス スコープで NSMetaDataQuery を実行して、このアプリのクラウドに既にあるファイルのリストを取得します。(クエリはメイン スレッドで実行する必要があることに注意してください。そうしないと、何も返されません)。

2) 同じ名前のファイルがある場合は、NSMetaData の最終変更日キー (NSMetadataItemFSContentChangeDateKey) を使用して、使用する必要があるもの (または競合を解決するために使用する方法) を判断できます。

3) ファイルがまだクラウドにない場合は、setUbiquitous メソッドを使用してクラウドに配置します。

于 2013-02-19T17:03:00.977 に答える