restringir sqlite-wal y sqlite-shm de la copy de security icloud

Estoy trabajando con conetworkingata por primera vez y tengo que restringir el file sqlite db de la copy de security de iCloud que está en el directory de documentos y lo he hecho usando el código siguiente

-(id)init { if((self = [super init])) { NSURL* documentsDirectoryURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; NSURL* modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"]; NSURL* giveForwardSqliteURL = [documentsDirectoryURL URLByAppendingPathComponent:@"InfoCollection.sqlite"]; NSError* error; m_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; m_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:m_managedObjectModel]; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; if ([m_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:giveForwardSqliteURL options:options error:&error]) { m_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [m_managedObjectContext setPersistentStoreCoordinator:m_persistentStoreCoordinator]; [self addSkipBackupAttributeToItemAtPath:giveForwardSqliteURL]; } else { NSLog(@"Failed to create or open database: %@", [error userInfo]); return nil; } } return self; } 

// Evita que iCloud tome una copy de security de la carpeta del directory de documentos

 - (BOOL)addSkipBackupAttributeToItemAtPath:(NSURL *) URL { assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } return success; } 

Ahora, lo que no entendí es que también debemos restringir los files sqlite-wal y sqlite-shm de la copy de security icloud, en caso afirmativo, cómo restringir los files sqlite-wal y sqlite-shm de la copy de security icloud

Y quiero una solución sin cambiar la location de sqlite db de la carpeta del directory de documentos … ¿cómo podemos hacerlo?

Corrija si algo está mal en el código anterior.

Gracias por adelantado

Y quiero una solución sin cambiar la location de sqlite db de la carpeta del directory de documentos … ¿cómo podemos hacerlo?

Primero, asegúrese de haber leído esto para determinar el directory apropiado en el que ubicar sus files.

Segundo, no estés tan atado a ponerlos directamente en el directory de documentos. En general, no es una buena idea llenar cada file directamente en el directory de documentos. En su lugar, debe usar una jerarquía de directory para particionar lógicamente sus datos.

A continuación, tenga en count que si excluye un directory de una copy de security, también se excluirán todos los files del directory.

Por lo tanto, si está dispuesto a ser algo flexible y seguir los consejos anteriores, simplemente puede usar un subdirectory del directory de documentos para su database de datos.

 NSURL* giveForwardDirURL = [documentsDirectoryURL URLByAppendingPathComponent:@"InfoCollection.dir"]; [[NSFileManager defaultManager] createDirectoryAtURL:giveForwardDirURL withIntermediateDirectories:YES attributes:nil error:NULL]; [self addSkipBackupAttributeToItemAtPath:giveForwardDirURL]; NSURL* giveForwardSqliteURL = [giveForwardDirURL URLByAppendingPathComponent:@"InfoCollection.sqlite"]; 

Sin embargo, si insiste en que sus files residan en el directory, deberá searchlos en la initialization, y luego deberá monitorear el directory a medida que se ejecuta la aplicación para que pueda establecer la marca si / cuando aparecen los files relacionados arriba.

Este hilo contiene información relacionada con eso: Notificación de cambios en el directory de iPhone / Documentos .

Puede forzar a Core Data a utilizar el modo de recuperación de datos, evitando los files -sh y -wal, agregando un dictionary de opciones a la -[NSPersistentStoreCoordinator addPersistentStore…] , como en esta respuesta:

https://stackoverflow.com/a/24261845/453082