Considere los siguientes dos ejemplos de código:¿Por qué utilizar un NSFileManager en lugar de usar el método writeToFile: atómicamente de NSData al crear un nuevo archivo?
NSData *imgData = UIImagePNGRepresentation(imgFull);
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"itemImg_%i.png", timestamp]]; //add our image to the path
[imgData writeToFile:fullPath atomically:YES];
y
NSData *imgData = UIImagePNGRepresentation(imgFull);
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"itemImg_%i.png", timestamp]]; //add our image to the path
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createFileAtPath:fullPath contents:imgData attributes:nil];
El segundo ejemplo se requiere una línea adicional de código y la inicialización de un objeto NSFileManager, mientras que el primer ejemplo simplemente tiene el objeto NSData imgData
escribirse en un archivo. Una ventaja adicional del primer ejemplo es que puede sobrescribir un archivo preexistente que tiene el mismo nombre.
Mi pregunta es: cuando se crean nuevos archivos, ¿bajo qué circunstancias realmente querría usar NSFileManager y su método createFileAtPath:contents:attributes:
?
NSData's writeToFile no sobrescribe como predeterminado, según mi experiencia. Y tampoco lo hace el archivo createFileAtPath de NSFileManager con atributos: nil.Información sobre los atributos del método NSDictionary está próximo, lo que sugiere que no se usa con frecuencia. –