我正在将 iCloud 与 Core Data 结合使用,基于 Apple 指定的 SQLite“库式”应用程序设计。虽然基本功能运行得很好,但我担心事务日志及其管理方式。
虽然我的应用程序的数据库并不大,但它非常活跃,并且在应用程序使用过程中核心数据堆栈被保存了很多次。我注意到创建了一个新的事务日志every核心数据保存。最终结果是我有大量事务日志,它们占用的空间比实际数据库多得多。
1) 事务日志是否会自动修剪/合并,或者它们会继续无限增长,最终数量达到数千并占用许多兆字节?似乎手动清除事务日志并重新创建 .baseline 存档的唯一方法是禁用然后重新启用 iCloud(删除普遍存在的容器并重新启动)。但这显然不是一个好的解决方案。
2)我当前的架构经常保存核心数据堆栈,即使是微小的更改。一般来说,这是有道理的,因为我的数据库很小,并且保存通常可以确保数据库文件始终是最新的。但是,考虑到上述事务日志问题,我认为我应该尽量减少对数据库的保存。也许会定期和/或在应用程序转换状态上这样做。
3)即使我通过减少保存数据库的频率来最大限度地减少事务日志的数量,这里似乎仍然存在问题,因为日志的数量会随着时间的推移而继续增长。最终,“事务日志”设计的好处将成为 iCloud 存储使用量以及添加新设备时初始 iCloud 同步的负担。
由于 Apple 在 iCloud 上提供的信息非常稀疏,而且几乎没有任何“最佳实践”形式的信息,因此我希望社区能够提供任何见解。
我就这个问题提交了雷达并收到了以下答复。他们指出它应该在 iOS 5.1 中正常工作,尽管我自己还没有验证这一点。
对任何可能误解以下内容的人进行澄清。事务日志将由核心数据内部清理。这不应该由应用程序本身执行。
工程部门针对此问题提供了以下反馈:
事务日志旨在在所有活动之后被删除
同龄人有机会阅读它们,并且它们超过了阈值
消耗的空间。之前有一个问题阻止了设备
正确地这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)