ios – 如何观察NSMetadataItem进行iCloud更新?

苹果
code example建议观察
NSMetadataQueryDidUpdateNotification以检测iCloud中的变化,但每次iCloud交易会多次触发.

每次NSMetadataQueryDidUpdateNotification触发时,他们的应用程序都会处理“fileListReceived”消息中的文件.

对于具有许多文档的应用程序,这不是理想的解决方案

voromax建议here更好的解决方案是观察NSMetadataItem的属性值.

任何人都可以解释/显示/详细说明这将如何工作,或提供替代解决方案?

最佳答案 NSMetadataQuery适用于在iCloud文件容器中查看出现或消失的文件(即添加或删除).虽然你的通知可以经常启动,但是你的应用中它是否是次优的,这取决于你对返回的数据做了什么.该示例每次都会重新加载整个列表,但如果您需要处理许多可能经常更新的文档,您可以提出一种更复杂的方法,只对更改进行操作.

要查看容器中文档的更改(内容)(例如,如果它们是打开的,并且您希望使用更改来更新UI),则需要将元数据查询与观察UIDocumentStateChangedNotification结合使用,以便在此上下文中关注您关注的每个文档.它将告诉您文档何时更新并且您可以做出反应 – 更新UI等…

我相信您链接的问题是讨论使用KVO跟踪单个返回的NSMetadataItems的属性,特别是下载状态,以确定文档何时完成从iCloud下载(或上载).例如,这对于显示进度条很有用.这不是UIDocumentStateChangedNotification的一个很好的替代品,但它可能是一个很好的赞美.为了真正拥有强大的UIDocument / iCloud实现,许多应用程序结合了所有这些方法,为用户提供最佳体验.

希望有所帮助.

点赞