2016-04-19 5 views
5

ho cercato di migrare alla nuova versione CoreData, sto seguendo questo passo:Come cancellare semplicemente i vecchi dati di base e ricostruire quello nuovo?

aggiungere una nuova versione del modello (Seleziona name.xcdatamodeld poi Editor-> Aggiungi modello Version) prima di apportare modifiche, se si avere un'app già inviata ad App Store che utilizza la versione del modello precedente.

Poi, Aggiungere un nuovo file da scheda di dati principale, come Mapping Model Select, Fonte modello (Modello Versione che l'App presentata sta usando) Destinazione modello (Modello Versione in cui hai fatto le modifiche)

source

Ma i miei dati sono per lo più immagini e crash app perché ci vuole un sacco di memoria. Quindi voglio eliminare il vecchio modello di dati e i suoi dati e creare nuovi dati di modello vuoti quando l'utente aggiorna la sua app. Come fare questo?

risposta

3

Se il modello di dati cambia, è sufficiente verificare il modello del file di database. Se non è quello nuovo, eliminare il file specificato in StoreCoordinator con NSFileManager e avviare nuovamente StoreCoordinater e NSManagedContext per crearne uno nuovo.

Qualcosa del genere (il codice non testato):

var error: NSError 
var applicationDocumentsDirectory: NSURL = NSFileManager.defaultManager().URLsForDirectory(NSDocumentDirectory, inDomains:NSUserDomainMask).lastObject 
let storeURL: NSURL = applicationDocumentsDirectory.URLByAppendingPathComponent("Database.sqlite") 
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error) 

Se il modello non è cambiato, è necessario salvare le informazioni dell'aggiornamento ovunque. Un file di testo, nel database stesso o in UserDefaults. Hai solo bisogno di un flag per verificare se il database è stato aggiornato/pulito.

È inoltre possibile eliminare il database come sopra o recuperare tutti gli oggetti ed eliminarli.

+0

ricostruisce i dati principali ogni volta che l'utente apre l'app? –

+1

@AldoLazuardi Spetta a te quando vuoi un nuovo database. Un'opzione potrebbe essere quella di creare un file di testo in cui si salva la versione del database. Se la versione è troppo vecchia e deve essere ricostruita, si elimina il file di archivio e si ricrea uno vuoto. – Binarian

+0

Elimina anche i file -shm e -wal con il relativo file Store –