2013-03-26 76 views
3

在我的应用程序中,我有这个简单的注释< - >> Core Data sqlite中的照片关系,照片是具有“允许外部存储”的二进制数据, ,删除规则为音符级联照片,照片无效音符。当我试图添加一些笔记与照片然后删除它们,它看起来很好在iPhone模拟器目录(外部照片文件被删除)。但是,当我在iPhone上使用iCloud同步功能试用它时,我的应用程序的iCloud存储大小只会在添加照片时保持增长,但在删除笔记或照片后不会减少 - 任何想法?核心数据删除外部存储实体不释放iCloud中的空间

回答

4

您删除了该照片,但事务日志仍然存在。核心数据的iCloud集成基于事务处理 - 无论您何时保存更改,都会创建一个新的事务日志。交易涉及创建,更新或删除数据。事务日志会一直存在,直到潜在的iCloud软件决定对此做些什么。

当您创建照片时,您将获得一个创建对象并包含照片数据的事务日志。当您删除照片时,您会看到一条说明删除该照片的事务日志。 第二个日志不会取消第一个,它增加了它。现在你有两个交易日志,照片数据仍然存在。

在某些时候,潜在的iCloud代码将合并日志,并且在那一刻照片应该实际上消失。然而,你不能做到这一点,你必须等待,直到它在未来某个时候发生。

+0

谢谢汤姆 - 我同时使用苹果技术支持票,并得到非常相似的答案。那意味着我们无能为力?我看到我的应用程序无需释放任何东西即可获得170MB的iCloud存储。另外,我从不同的讨论中看到,在iCloud中使用Core Data通常是一个糟糕的主意 - 有没有建议我应该实际去哪个方法?非常感谢! – hyouuu 2013-03-27 03:22:38

+0

不幸的是,我不知道任何可以直接影响它的内容。核心数据的iCloud集成通常有多种方式。您可能需要考虑其他选项,或者只是在未来iOS版本改进之前不包括同步。 – 2013-03-27 04:42:08

+0

感谢您的阐述汤姆! – hyouuu 2013-03-27 04:52:42