我找不到一种明显的方法来检测我正在监视的文档的删除(我缓存了我的应用程序关心的文档列表)。
在 Device1 上:当我删除一个文档时,我调用
[fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting
error:&err byAccessor:^(NSURL* writingURL) {
[fileManager removeItemAtURL:writingURL error:nil];
这在 Device1 上运行良好,一切都保持同步。在 Device2 上:我试图依靠NSMetadataQuery
通知:
初始文件列表在NSMetadataQueryDidFinishGatheringNotification
文档添加/更改中正常通过NSMetadataQueryDidUpdateNotification
当我删除 Device1 上的文件时,我得到一个奇怪的结果:NSMetadataQueryDidUpdateNotification
列出了我的所有文档(除了已删除的文档)的更新我不确定我应该如何检测丢失的文件已被删除或更新通知就是为了这个目的
问题1:我应该检查什么?
我尝试了另一条路线,即注册为NSFilePresenter
iCloud URL:
- (NSURL *)iCloudDocumentsURL
{
return [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil] URLByAppendingPathComponent:@"Documents"];
}
现在,NSFilePresenter
当该 URL 中的文件发生更改时,我会通过协议进行调用,但是由于回调是模糊的,因此运行逻辑以确定丢失的文档是非常缓慢的。我得到的唯一电话是我希望通过
但从未调用过此方法- (void)presentedItemDidChange;
来获得回调。- (void)accommodatePresentedSubitemDeletionAtURL:(NSURL *)url completionHandler:(void (^)(NSError *errorOrNil))completionHandler
问题2:知道如何让它工作吗?