我找不到明显的方式来检测我正在监视的文档的删除(我缓存了我的应用程序关心的文档列表)。跨设备检测iCloud中文档删除的正确方法?
Device1上: 当我删除的文档,我叫
[fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting
error:&err byAccessor:^(NSURL* writingURL) {
[fileManager removeItemAtURL:writingURL error:nil];
这工作Device1上的精细,一切都保持同步。 在设备2: 我试图依靠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:任何想法如何得到这个工作?
这样你就不知道文件何时被移动。如果你不太在意并在文件包中存储元数据,那很好,但如果你在外面引用文件,那么这种方法不会产生好的结果。 – Andy