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