ios - UIDocument openWithCompletionHandler : forces NSMetadataQuery to update

标签 ios objective-c macos cocoa core-data

我正在尝试使用 iCloud,一个应用正在监听 NSMetadataQuery 订阅 NSMetadataQueryDidFinishGatheringNotification 的更新。

当应用程序收到通知时,我使用 openWithCompletionHandler: 读取了一些 iCloud UIDocument 文件:但是该调用导致 NSMetadataQuery 再次通知我更新,并且所以应用进入无限循环 update > read > update > read > …

openWithCompletionHandler: 应该这样做吗?我能做些什么来防止它出现这种循环?

最佳答案

我也遇到过这个问题,好像是你问题的答案

Should openWithCompletionHandler: behave this way?

是"is"。我可以假设,但听起来很合理,当你执行 openWithCompletionHandler: 时, block 被调用,当所有数据都被加载时。但是,使用 NSMetadataQueryDidUpdateNotification,您可以跟踪下载进度(例如,调用 openWithHandler block 之前的数据加载百分比)。

目前我的解决方案是:

  • 观察 NSMetadataUbiquitousItemDownloadingStatusCurrent 的通知更新
  • 在我想打开文档时禁用更新
  • 启用文档打开 block 内查询的更新

由于我的查询正在监视单个文件,所以我不怕丢失通知,在打开一个文档时可能会跳过通知。如果看的是几个文件可能不是这样,但是不知道怎么解决比较好

关于ios - UIDocument openWithCompletionHandler : forces NSMetadataQuery to update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209208/

相关文章:

c++ - 像油漆一样添加颜色(颜色)(蓝色 + 黄色 = 绿色等)

objective-c - 使用 localizedStandardCompare 对 NSURL 进行排序的性能

ios - FBSDKAccessToken.currentAccessToken().userID 有时返回 Nil

ios - 有没有办法让 `genstrings` 与 `LocalizedStringKey` 一起工作?

ios - 带有垂直标题的 UICollectionView 水平滚动

iOS SDK 和 Instagram

c++ - 在 OSX 10.11.4 + clang 上抛出异常导致 SIGSEGV

c# - "Could not launch Visual studio"错误(在 Mac 上)

ios - 游戏中心不保存分数

ios - 如何添加不可移动的 UITableViewCells