我有托管具有图像属性的对象。由于在CoreData中存储大blob是一个坏主意,我正在尝试使用内置的CoreData选项“存储在外部记录文件”,您可以在数据模型检查器中看到它。
尽管启用了此选项,但我看不到任何外部存储的图像数据。从大小来看,似乎它们仍然保存在sqlite文件中。有什么问题?
答案 0 :(得分:24)
如果您的商店类型为NSSQLiteStoreType
,则您的属性为NSBinaryDataAttributeType
。您已启用setAllowsExternalBinaryDataStorage
,并且您的对象数据大小大于1MB。
您可以在与持久存储相同的位置找到隐藏子目录中的(外部)文件。
<path>/<database>.sqlite
<path>/<your_database>_SUPPORT/_EXTERNAL_DATA/
答案 1 :(得分:0)
sqlite2不允许BLOB数据的大小超过1MB,但是sqlite 3允许更大的BLOB.First检查使用哪个版本的sqlite。 如果你的文件是MB,我宁愿更喜欢将它们存储在本地数据库中。