iphone - 为什么在自动保存 UIDocument 后调用 loadFromContents?

标签 iphone ios icloud uidocument

我有一个 iOS 应用程序,它实现了 UIDocument 的自定义子类,该子类将文件包装器封装在数据、存档对象和图像包上。我最初将实现转换为 UIDocument 以支持 iCloud,但它太不可靠,因此我取出 iCloud 部分,只使用具有本地存储的 UIDocument。

当用户修改数据时,我将 updateChangeCount: 发送到 UIDocument 实例,并定期在后台自动保存。我仅在应用程序转到后台时关闭文档。我发现在调用 UIDocument 的 contentForType 方法的自动保存后,还会调用 loadFromContents 。我从逻辑上不理解这一点,它也导致我的界面出现问题。

我认为只有在打开文档或在其他设备上修改 iCloud 文档时才会调用 loadFromContents。因此,当我的文档在后台自动保存时,它也会重新加载,这会导致 UI 更新,有时会丢弃尚未保存的正在进行的新工作。我可以忽略 UI 中的重新加载,但由于模型数据与 UI 对象不同,我仍然会遇到一些问题。

那么我做错了什么导致这种行为呢?我希望保存时不启动 loadFromContents 或了解如何处理该行为。

谢谢!

最佳答案

我发现这种行为在某种程度上是由于我在初始实现中包装了contentsForType和writeContents:方法的一些@synchronized调用所致,以防止在关闭未保存更改的文档时发生崩溃。我几乎同时收到两个对contentsForType 的调用,这导致了错误的访问错误。

我找到了一种更简洁的方法来防止这些崩溃,方法是在关闭文档之前设置 updateChangeCount:UIDocumentChangeCleared。

关于iphone - 为什么在自动保存 UIDocument 后调用 loadFromContents?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869336/

相关文章:

iphone - 在移动设备(iphone、android 等)上查看 trac

ios - CollectionViewCell 问题。从 .xib 到自定义 collectionviewcell 的 Storyboard转换

ios - iCloud 文档选择器 : App folders are disabled on import

ios - 将 “iCloud containers” 权利添加到您的 App ID

ios - 为什么iphone的视频是颠倒的?

iphone - 在 Objective-C 中运行时创建变量

javascript - 为什么我的网络应用程序在打开时无法重新加载

ios - 是什么导致 UIButton 标题周围的水平填充?

iphone - 如何强制 iCloud 与核心数据同步?

iPhone UIWebView epubs 逐页拆分