seguridad restaurar respaldo respaldar realizar quitar pudo produjo porque podido ocurrio leer escribir error desencriptar desconecto datos copia contraseña ios nsdocumentdirectory

ios - restaurar - CFURLSetResourcePropertyForKey falló al deshabilitar la copia de seguridad de datos en NSDocumentDirectory



itunes no pudo restaurar el iphone porque ocurrio un error al leer o escribir en el iphone (2)

Estoy tratando de descargar archivos de imagen y almacenarlos en NSDocumentDirectory . Para hacerlo, debo desactivar la copia de seguridad de datos en iCloud y iTunes. A continuación están mis códigos:

+(void)saveData:(NSData*)thedata:(NSString*)fileName { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:fileName]; NSFileManager *fileManager = [NSFileManager defaultManager]; [fileManager createFileAtPath:localFilePath contents:thedata attributes:nil]; //prevent files from backup on iCloud or iTune NSURL *fileURL = [NSURL URLWithString:localFilePath]; [self addSkipBackupAttributeToItemAtURL:fileURL]; }

y para mi addskipbackupattributetoitematurl:

+(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)fileURL { if (![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) { NSLog(@"File %@ doesn''t exist!",[fileURL path]); return NO; } NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; if ([currSysVer isEqualToString:@"5.0.1"]) { const char* filePath = [[fileURL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup"; u_int8_t attrValue = 1; int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); NSLog(@"Excluded ''%@'' from backup",fileURL); return result == 0; } else if (&NSURLIsExcludedFromBackupKey) { NSError *error = nil; BOOL result = [fileURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; if (result == NO) { NSLog(@"Error excluding ''%@'' from backup. Error: %@",fileURL, error); return NO; } else { NSLog(@"Excluded ''%@'' from backup",fileURL); return YES; } } else { return YES; } }

Sin embargo, el BOOL result = [fileURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; creó el siguiente mensaje

CFURLSetResourcePropertyForKey falló porque se le pasó esta URL que no tiene esquema: /var/mobile/Applications/CF69D567-1D37-4053-BFA8-5D0FCBD9C2B2/Documents/coffee.jpg

Me pregunto si alguno se encontró con este problema ??


Resuelto una vez que cambié

NSURL *fileURL = [NSURL URLWithString:localFilePath];

a

NSURL *fileURL = [NSURL fileURLWithPath:localFilePath];

Todo funciona perfectamente.


Swift :

let fileURL = URL(fileURLWithPath: somepath)