管理核心数据iCloud事务日志

the*_*oid 11 iphone core-data ios icloud

我正在使用iCloud和Core Data,它基于Apple指定的SQLite"库式"应用程序设计.虽然基本功能运行良好,但我担心事务日志及其管理方式.

虽然我的应用程序的数据库不是很大,但它非常活跃,并且在应用程序正在使用时核心数据堆栈被保存了很多次.我注意到为每个核心数据保存创建了一个新的事务日志.最终结果是我有一个TON的事务日志,它们比实际的数据库占用更多的空间.

1)事务日志是否会被自动修剪/合并,还是会无限期地继续增长,最终会成千上万,并占用数兆字节?似乎手动清除事务日志并重新创建.baseline存档的唯一方法是禁用然后重新启用iCloud(删除无处不在的容器并重新启动).但这显然不是一个好的解决方案.

2)我的当前架构经常保存核心数据堆栈,即使是微小的更改.通常,这是有道理的,因为我的数据库很小并且通常保存数据库文件始终是最新的.但是,考虑到事务日志的上述问题,我认为我应该尽量减少对数据库的保存.也许是在定时和/或应用过渡状态下这样做.

3)即使我通过减少保存数据库的频率来最小化事务日志的数量,这里似乎存在问题,因为日志将随着时间的推移而继续增加.最终,"交易日志"设计的好处将成为使用的iCloud存储量以及添加新设备时初始iCloud同步的负担.

由于Apple提供了非常稀疏的iCloud信息,而且几乎没有提供"最佳实践"的形式,我很感激社区的任何见解.

the*_*oid 3

我就这个问题提交了雷达并收到了以下答复。他们指出它应该在 iOS 5.1 中正常工作,尽管我自己还没有验证这一点。

对任何可能误解以下内容的人进行澄清。事务日志将由核心数据内部清理。这不应该由应用程序本身执行。

工程部门针对此问题提供了以下反馈:

事务日志旨在在所有活动对等方都有机会读取它们并且它们超过消耗的空间阈值后被删除。之前的一个问题导致设备无法正确执行此操作。