2012-05-31 14 views
15

Estoy tratando de evitar que una copia de seguridad de una copia de seguridad de itunes. Seguí el Informe técnico http://developer.apple.com/library/ios/#qa/qa1719/_index.html Pero parece que falg es cada vez nulo. Uso el IOS 5.1 probado en el simulador y en el dispositivo. Pero nada ayuda. Los métodos devuelven "éxito" cada vez, pero la bandera sigue siendo nula.NSURLIsExcludedFromBackupKey no se puede establecer correctamente

+ (BOOL) hasSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    NSError *error = nil; 

    id flag = nil; 
    BOOL success = [URL getResourceValue: &flag 
            forKey: NSURLIsExcludedFromBackupKey error: &error]; 

    if(!success){ 

     NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); 
     return false; 
    } 

    if (!flag) 
     return false; 

    return [flag boolValue]; 
} 

+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    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; 

} 

+ (BOOL)removeSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    NSError *error = nil; 

    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: NO] 
            forKey: NSURLIsExcludedFromBackupKey error: &error]; 

    if(!success){ 

     NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); 

    } 

    return success; 

} 

Respuesta

26

Acabo de solucionar esto en mi aplicación y aunque fue un poco frustrante, todo terminó funcionando genial. Entonces, aquí está el código para el addSkipBackupAttributeToItemAtURL. Es posible que desee verificarlo. Trata 5.0.1 y 5.0 también. Solo está tratando 5.1 y más en su código.

PERO:

Digamos que usted tiene una NSString * ruta - la ruta de la carpeta/archivo, no llame al método con:

[NSURL urlWithString:path];que funcionará en 5.0 .1 pero no en 5.1 y superior.

lugar use [NSURL fileURLWithPath:path];

Así: [MiClase addSkipBackupAttributeToItemAtURL: [NSURL fileURLWithPath: ruta]];

De hecho, creo que ese es el único problema con su código. Tomar el método al que me he vinculado solo proporcionará compatibilidad con versiones anteriores, lo cual es una gran adición.

Espero que esto ayude.

Saludos, George

+1

brillante que me salvó la mañana! – microspino

+0

¡Gracias! FWIW, presenté un informe de error a Apple ... Debería al menos dar un error si no funciona. –

+0

Bueno, eso definitivamente no es idiosincrásico y raro ni nada ... ¡Muchas gracias por esta respuesta! Totalmente me salvó un montón de dolor. – DanM

2

El mismo problema para mí. También me lo resolvió cambiando la forma en que llamé addSkipBackupAttributeToItemAtURL Esa es la forma correcta:

[MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]]; 
Cuestiones relacionadas