Storing blobs in external location using built-in CoreData option

a 夏天 提交于 2019-12-18 12:21:27

问题


I have managed objects that have image properties. Since storing large blobs in CoreData is a bad idea, I'm trying to use the built-in CoreData option "Store in External Record File" which you can see in the Data Model Inspector.

Despite enabling this option, I do not see any image data being stored externally. Judging by the size, it seems like they are still being saved in the sqlite file. What is the issue?


回答1:


If your store type is NSSQLiteStoreType, your attribute is NSBinaryDataAttributeType. You have enabled setAllowsExternalBinaryDataStorage and your object data size is larger then approximately 1MB.

  • Objects that are smaller than 1MB are stored in the sqlite database.
  • Objects that are larger are just a reference to a external file.

You'll find the (external) files in a hidden sub-directory at the same location as the persistent store.

<path>/<database>.sqlite
<path>/<your_database>_SUPPORT/_EXTERNAL_DATA/



回答2:


sqlite2 does not allow size of BLOB data to be more than 1MB,However sqlite 3 allows larger BLOB.First check out which version of sqlite u r using. And if ur file is in MB's i would rather prefer them storing in local database instead.



来源:https://stackoverflow.com/questions/9801944/storing-blobs-in-external-location-using-built-in-coredata-option

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!