2011-10-28 16 views

risposta

32

Core Data Release Notes for iOS 5.0

Quando abilitato, Core Data decide euristico su una base per-valore se dovrebbe salvare i dati direttamente nel database o conservare un URI in un file separato che gestisce per voi. Non è possibile eseguire una query in base al contenuto di di una proprietà dati binari se si utilizza questa opzione.

E dal tuo link External Binary Data, l'euristica sembra essere

oggetti che sono più piccoli di 1 MB vengono memorizzati nel database. Per gli oggetti di dimensioni maggiori, viene creato un file esterno e il database memorizza solo un riferimento.

Così i seguenti consigli è ancora valida: CoreData : store images to DB or not?

  • < negozio 100kb nella stessa tabella come i dati rilevanti
  • < negozio 1MB in una tabella separata collegata tramite un rapporto da evitare caricamento inutilmente
  • 1mb store su disco e riferimento all'interno di Core Data

La bandiera imposta Core Data di seguire quel consiglio e memorizzare immagini> 1MB come un file disco separato automaticamente.

+1

Quindi in tal caso dovremmo probabilmente inserirlo in un'entità separata nel caso in cui sia compreso nell'intervallo 100kb-1mb poiché l'archiviazione esterna non tiene conto di quel caso? –

+1

Avvertenza: c'è un bug con l'archiviazione di immagini esterne che lo blocca quando viene eliminato, a volte: http://stackoverflow.com/questions/7930427/error-uiimage-deleteexternalreferencedirectory permanente- riconosciuta-se –

+3

C'è un altro bug con memoria esterna e migrazione. Se si tenta di creare un nuovo modello e quindi di utilizzare la migrazione leggera, si perdono tutti i "Dati binari" archiviati in un file esterno. – zirinisp

Problemi correlati