gpt4 book ai didi

ios - 存储在 CoreData 中的可转换图像 - 它可以与预置数据库一起使用吗?

转载 作者:行者123 更新时间:2023-11-28 22:33:51 25 4
gpt4 key购买 nike

如果我在 Core Data 中使用“Transformable”属性来存储图像,我的理解是 Core Data 可能会或可能不会根据文件大小将其存储在持久存储中。通常我不会关心它存储图像的位置,但对于这个应用程序,我需要将它与一个预先植入的数据库一起发送,以防在应用程序首次启动时找不到互联网连接。所以我基本上想拍摄数据库的快照(包括图像)并在应用程序首次启动时加载它。

我的问题是,如果 Core Data 出于某种原因决定不使用持久存储,那么当我加载预置数据库时图像是否仍会加载?或者它会因为图像存储在某个神奇区域而损坏,当用户在自己的设备上安装时该区域不再存在?

最佳答案

使属性可转换与使用外部存储无关。 存储在外部记录文件选项可用于二进制属性和可转换对象,但两者都不是必需的。

如果你有一个可转换的属性并且使用外部记录文件,那么你是正确的,Core Data根据它自己未记录的逻辑决定是否实际使用外部文件(但可能通过检查尺寸)。这些外部文件保存在数据存储所在的子目录中。如果您的数据存储名为 Foo.sqlite,则在找到该文件的同一目录中有一个名为 .Foo_SUPPORT/_EXTERNAL_DATA/ 的目录。您可以通过多种方式处理此问题:

  • 复制Foo.sqlite 所在的整个目录,包括点文件。这是首选,因为外部引用目录的路径未记录并且(理论上)可以更改。您将获得外部引用,但不需要对目录名称进行硬编码。
  • 直接复制目录,因为你知道它在哪里。出于上述原因,这可能不是一个好主意。

或者,如果您愿意,也可以不使用外部引用。它们不是任何属性所必需的,如果您愿意,您可以将所有数据放在一个单一的 SQLite 文件中。

关于ios - 存储在 CoreData 中的可转换图像 - 它可以与预置数据库一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com