使用内置CoreData选项在外部位置存储blob

Mor*_*ess 13 blob core-data ios

我有托管具有图像属性的对象.由于在CoreData中存储大blob是一个坏主意,我正在尝试使用内置的CoreData选项" Store in External Record File ",您可以在Data Model Inspector中看到它.

尽管启用了此选项,但我看不到任何外部存储的图像数据.从大小来看,似乎它们仍然保存在sqlite文件中.有什么问题?

小智 25

如果您的商店类型是NSSQLiteStoreType,您的属性是NSBinaryDataAttributeType.您已启用,setAllowsExternalBinaryDataStorage并且您的对象数据大小大于1MB.

  • 小于1MB的对象存储在sqlite数据库中.
  • 较大的对象只是对外部文件的引用.

您将在与持久性存储相同的位置的隐藏子目录中找到(外部)文件.

<path>/<database>.sqlite
<path>/<your_database>_SUPPORT/_EXTERNAL_DATA/
Run Code Online (Sandbox Code Playgroud)

  • 哇.你的意思是核心数据会自动决定这一点.这太疯狂了. (3认同)