web-dev-qa-db-fra.com

Core Data et iOS 7: comportement différent du magasin persistant

Je prépare une mise à jour pour une application basée sur Core Data pour les correctifs avec iOS 7. J'utilise Xcode 5 et iOS 7 SDK GM. Cependant, j'ai réalisé un comportement différent du magasin persistant (qui est un UIManagedDocument): Avant les versions iOS 7, il n'y avait qu'un seul fichier persistentStore dans le dossier des documents (parfois il y en avait un deuxième persistentStore-journal).

Dans les versions iOS 7 (installation propre), il y a maintenant trois fichiers pour le magasin persistant:

  • persistentStore
  • persistentStore-wal et
  • persistentStore-shm

Apple a-t-il changé le mode journal par défaut en WAL maintenant? Je me demande s'il y a un impact sur mon application (pensez aux utilisateurs comment mettre à jour depuis la dernière version)? Serait-il préférable de désactiver WAL - et si oui, comment puis-je le faire avec iOS 7/UIManagedDocument?

65
FrankZp

Oui, Apple a changé le mode de journal par défaut en WAL pour iOS7. Vous pouvez spécifier le mode de journal en ajoutant NSSQLitePragmasOption aux options lors de l'appel à addPersistentStoreWithType: configuration: url: options: error. Par exemple, pour définir le mode par défaut précédent de DELETE:

NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };

D'après mon expérience, WAL donne de meilleures performances, mais consultez également cet article:

iOS CoreData - y a-t-il des inconvénients à activer la journalisation sqlite WAL/Write-Ahead

95
Andy Etheridge