66 votes

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 des corrections 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 d'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 d'iOS 7 (installation propre), il y a maintenant trois fichiers pour le magasin permanent :

  • persistentStore
  • persistentStore-wal y
  • persistentStore-shm

Est-ce qu'Apple a 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 qui mettent à 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 ?

96voto

Andy Etheridge Points 976

Oui, Apple a changé le mode de journal par défaut en WAL pour iOS7. Vous pouvez spécifier le mode journal en ajoutant l'option NSSQLitePragmasOption aux options lors de l'appel à addPersistentStoreWithType:configuration:url:options:error. Par exemple, pour rétablir 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 voyez aussi ce post :

iOS CoreData - Y a-t-il des inconvénients à activer le WAL / Write-Ahead Logging de sqlite ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X