【问题标题】:Core Data deleting External Storage entity doesn't free up space in iCloudCore Data 删除外部存储实体不会释放 iCloud 中的空间
【发布时间】:2013-03-26 04:52:50
【问题描述】:

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

【问题讨论】:

    标签: ios core-data icloud


    【解决方案1】:

    您删除了照片,但交易日志仍然存在。 Core Data 的 iCloud 集成基于事务——任何时候你保存更改,都会创建一个新的事务日志。事务包括创建、更新或删除数据。事务日志一直存在,直到底层 iCloud 软件决定对其进行处理。

    创建照片时,您会获得一个创建对象并包含照片数据的事务日志。当您删除照片时,您会得到一个交易日志,上面写着要删除该照片。 第二个日志不会抵消第一个,它会添加到它。现在您拥有两个事务日志,并且照片数据仍然存在。

    在某些时候,底层 iCloud 代码会合并日志,此时照片应该会消失。但是,您无法做到这一点,您必须等到它在将来的某个日期发生。

    【讨论】:

    • 感谢 Tom - 我同时使用了 Apple 技术支持票并得到了非常相似的答案。所以这意味着我们对此无能为力吗?我看到我的应用程序在没有释放任何东西的情况下获得了高达 170MB 的 iCloud 存储空间。另外,我从不同的讨论中看到,将 Core Data 与 iCloud 一起使用通常是一个坏主意——有没有建议我应该采用哪种方法?非常感谢!
    • 不幸的是,我不知道您可以做什么直接影响它。 Core Data 的 iCloud 集成经常以各种方式不稳定。您可能需要考虑其他选项,或者在未来的 iOS 版本改进之前不包括同步。
    • 感谢汤姆的详细说明!
    • 嗨,Tom,有什么好的方法可以备份 iCloud CoreData 数据库以防损坏?我在这里创建了一个问题:stackoverflow.com/questions/15694426/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多