Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Storing blobs in external location using built-in CoreData option

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?

like image 708
Morrowless Avatar asked Mar 21 '12 09:03

Morrowless


1 Answers

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/
like image 98
marcusg Avatar answered Sep 22 '22 22:09

marcusg