核心数据删除外部存储实体不会释放iCloud中的空间

时间:2013-03-26 04:52:50

标签: ios core-data icloud

在我的应用中,我有这个简单的说明< - >> Core Data sqlite中的照片关系,照片是带有“允许外部存储”的二进制数据,删除规则是注释级联照片,照片无效注释。当我尝试添加一些带有照片的笔记然后删除它们时,它在iPhone模拟器目录中看起来很好(外部照片文件被删除)。但是,当我在iCloud同步的iPhone中试用它时,我的应用程序的iCloud存储大小只会在我添加照片时不断增加,但在删除笔记或照片之后永远不会减少 - 任何想法?

1 个答案:

答案 0 :(得分:4)

您删除了照片,但事务日志仍然存在。 Core Data的iCloud集成基于事务 - 每次保存更改时,都会创建新的事务日志。交易包括创建,更新或删除数据。事务日志一直存在,直到底层的iCloud软件决定对它做些什么。

创建照片时,您会获得一个创建对象并包含照片数据的事务日志。删除照片后,您会收到一条说明要删除该照片的事务日志。 第二个日志不会取消第一个,它会添加到它。现在你有两个交易日志,照片数据仍在那里。

在某些时候,底层的iCloud代码将合并日志,此时照片应该实际消失。但是,你不能让这种情况发生,你必须等到将来发生这件事。