¿Cómo utilizar la API addSkipBackupAttributeToItemAtURL?

mi request fue rechazada debido a este problema:

http://i.imgur.com/yajQh.png

Mi aplicación es un dictionary que utiliza SQL DBs, con marcadores y etc …

así que copié este código de Apple docs en appDelegate.m:

- (BOOL)addSkipBackupAttributeToItemAtURL:(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; } 

pero se usó así:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self addSkipBackupAttributeToItemAtURL:[NSURL URLWithString:@"<myApplication>/Library/Caches"]]; } 

pero falla con esta razón:

Error de aserción: ([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]), function – [AppDelegate addSkipBackupAttributeToItemAtURL:], file / iData / Development 2011 / Mi iPhone Project / APPNAME / APPNAME / AppDelegate.m, línea 27.

De acuerdo con esa image, ¿este es mi único problema para el rechazo? porque esta es la primera vez que trabajo con la database.

Gracias . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EDITADO:

 - (NSString *) getDBPath { NSInteger kValue = [[[NSUserDefaults standardUserDefaults] stringForKey:@"Bv"] intValue]; NSString *documentsDir = [[NSString alloc] init]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); documentsDir = [paths objectAtIndex:0]; switch (kValue) { case 0: documentsDir = [NSString stringWithFormat:@"%@/eng-per.sqlite", documentsDir]; break; case 1: documentsDir = [NSString stringWithFormat:@"%@/eng-per.sqlite", documentsDir]; break; case 2: documentsDir = [NSString stringWithFormat:@"%@/per-eng.sqlite", documentsDir]; break; } return documentsDir 

}

y luego se cambió a esto en la aplicación delegate.m:

 [self addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:dbClass.getDBPath]]; 

ahora la aplicación almuerza bien sin falla

Tu aplicación está "chocando" porque estás presionando en línea:

 assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

Y sospecho que tu problema es en realidad cómo estás configurando la URL:

 [NSURL URLWithString:@"<myApplication>/Library/Caches"]; 

¿Cómo estás obteniendo la ruta a " <myApplication> "?

Debe get la carpeta de caching verdadera de su aplicación, que puede hacer a través de:

[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask]; (para la location pasada a través de la URL del file)

o

NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); (para la ruta en forma de NSString)

Por lo tanto, en última instancia, lo que debe hacer no es afirmar si la key ya se ha establecido en los valores pnetworkingeterminados y necesita configurar correctamente la URL del file para el file que está guardando.

Cree su URL (una URL de file, para ser precisos) usando algo como:

 NSArray * arrayOfURLs = [[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask]; // make certain there's at least one file url returned by the above call if([arrayOfURLs count] > 0) { // and this would just be the URL to the cache directory... NSURL * cacheDirectoryPath = [arrayOfURLs objectAtIndex: 0]; // ... to create a file url to your actual dictionary, you'd need to add a // filename or path component. // Assuming you save this as a property within your object self.cacheFileURL = [cacheDirectoryPath URLByAppendingPathComponent: @"myDatabase.db"]; }