監視しているドキュメントの削除を検出する明確な方法が見つかりません(アプリが気にするドキュメントのリストをキャッシュします)。
デバイス1の場合:ドキュメントを削除すると、
[fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting
error:&err byAccessor:^(NSURL* writingURL) {
[fileManager removeItemAtURL:writingURL error:nil];
これはDevice1で正常に機能し、すべてが同期されたままになります。NSMetadataQuery
デバイス2の場合:通知に依存しようとしていました:
最初のファイルリストは、NSMetadataQueryDidFinishGatheringNotification
ドキュメントの追加/変更で問題なく機能します。NSMetadataQueryDidUpdateNotification
Device1でファイルを削除すると、奇妙な結果が得られます。NSMetadataQueryDidUpdateNotification
すべてのドキュメント(削除されたものを除く)がリストされた状態で更新が行われます。不足しているファイルが削除されたこと、または更新が削除されたことをどのように検出するのかわかりません。通知はその目的のためでした
質問1:何をチェックする必要がありますか?
NSFilePresenter
私はiCloudURLのとして登録するという別のルートを試しました:
- (NSURL *)iCloudDocumentsURL
{
return [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] URLByAppendingPathComponent:@"Documents"];
}
そのURLのファイルが変更されると、プロトコルを介して呼び出されるようになりNSFilePresenter
ましたが、コールバックがあいまいなため、ロジックを実行して欠落しているドキュメントを特定するのは非常に遅くなります。私が返す唯一の呼び出しは- (void)presentedItemDidChange;
、を介してコールバックを取得することを期待していたことですが、- (void)accommodatePresentedSubitemDeletionAtURL:(NSURL *)url completionHandler:(void (^)(NSError *errorOrNil))completionHandler
このメソッドは呼び出されません。
質問2:それを機能させる方法はありますか?