ios - 如何观察 NSMetadataItem 的 iCloud 更新?

标签 ios icloud

苹果 code example建议观察NSMetadataQueryDidUpdateNotification用于检测 iCloud 中的变化,但每次 iCloud 交易都会触发多次。 每次 NSMetadataQueryDidUpdateNotification 触发时,他们的应用程序都会处理“fileListReceived”消息中的文件。

对于包含许多文档的应用程序,这不是一个理想的解决方案。

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

谁能解释/展示/详细说明这是如何工作的,或者提供替代解决方案?

最佳答案

NSMetadataQuery 适用于观察 iCloud 文件容器中文件的出现或消失(即添加或删除)。虽然您认为通知可以经常触发是正确的,但它在您的应用程序中是否次优取决于您对返回数据的处理方式。该示例每次都会重新加载整个列表,但如果您需要处理大量可能经常更新的文档,您可以想出一种更复杂的方法,它只对更改进行操作。

为了观察容器中文档的(内容)变化(例如,如果它们是打开的并且你想用变化更新 UI),你需要结合元数据查询和观察你关心的每个文档的 UIDocumentStateChangedNotification在这种情况下。它会告诉您文档何时更新,您可以使用react - 更新 UI 等...

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

希望对您有所帮助。

关于ios - 如何观察 NSMetadataItem 的 iCloud 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224727/

相关文章:

ios - Swift 中的 Adob​​e Creative SDK

ios - 无法打开文件 “Main.strings”,因为没有这样的文件。

iphone - 在iOS 4上编译时,iphone iCloud应用程序崩溃

objective-c - iOS 5.0.1 中防止清除数据的文件属性?

iphone - iCloud 会保留属于已删除应用程序的用户数据吗?

ios - 如何使用 Sprite Kit 减慢运行 SKAction followPath 的 SKSpriteNode 以获得慢动作效果?

iphone - 如何重写 [NSRunLoop runUntilDate :] to GCD code?

ios - 使用 asynchImageView 调用网络服务

ios - 如何在iCloud Drive上备份和还原.zip文件?

ios - iOS-如何构建数据库以符合iCloud备份规则