Core Data y iOS 7: comportamiento diferente de la tienda persistente

Estoy preparando una actualización para una aplicación basada en Core Data para correcciones con iOS 7. Utilizo Xcode 5 y iOS 7 SDK GM. Sin embargo, me di cuenta de un comportamiento diferente de la tienda persistente (que es un UIManagedDocument ): antes de las comstackciones de iOS 7 solo había un archivo persistentStore en la carpeta de documentos (a veces había una segunda persistentStore-journal ).

En las versiones de iOS 7 (instalación limpia), ahora hay tres archivos para la tienda persistente:

  • persistentStore
  • persistentStore-wal y
  • persistentStore-shm

¿Apple cambió el modo diario de forma predeterminada a WAL ahora? Me pregunto si hay un impacto en mi aplicación (piense en los usuarios cómo se actualizan desde la última versión). ¿Sería mejor deshabilitar WAL? De ser así, ¿cómo puedo hacer esto con iOS 7 / UIManagedDocument ?

    Sí, Apple ha cambiado el modo de diario predeterminado a WAL para iOS7. Puede especificar el modo diario agregando NSSQLitePragmasOption a las opciones al llamar a addPersistentStoreWithType: configuration: url: options: error. Por ejemplo, para establecer el modo predeterminado anterior de ELIMINAR:

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

    En mi experiencia WAL ofrece un mejor rendimiento, pero también veo esta publicación:

    iOS CoreData: ¿hay alguna desventaja para habilitar sqlite WAL / Write-Ahead Logging?