Pregunta realmente simple pero no parece estar clara en los documentos de Apple.Escribir writeToFile: atómicamente: ¿sobrescribir datos?
¿writeToFile:atomically:
para NSData
, NSArray
etc. sobrescriben los datos existentes en un archivo?
Pregunta realmente simple pero no parece estar clara en los documentos de Apple.Escribir writeToFile: atómicamente: ¿sobrescribir datos?
¿writeToFile:atomically:
para NSData
, NSArray
etc. sobrescriben los datos existentes en un archivo?
Sí. Va a.
Aquí hay algunos caracteres para pasar el límite de 30 caracteres.
Método writeToFile:atomically:
Sobrescribir siempre ARCHIVO, independientemente de la atomically:
SÍ o NO.
Información Apple docs (NSData, la sección "Almacenamiento de datos"):
The NSData class and its subclasses provide methods to quickly and easily save their contents to disk. To minimize the risk of data loss, these methods provide the option of saving the data atomically. Atomic writes guarantee that the data is either saved in its entirety, or it fails completely. The atomic write begins by writing the data to a temporary file. If this write succeeds, then the method moves the temporary file to its final location.
Sin una palabra sobre la comprobación de si el archivo existe.
Por ejemplo, para el método de copyItemAtPath:toPath:error:
en docs (NSFileManager, sección de Discusión) escrito específicamente sobre esta comprobación:
If a file with the same name already exists at dstPath, this method stops the copy attempt and returns an appropriate error.
+1 para "documentar" los caracteres adicionales :) – Julian
Si lo hace de forma atómica o no doesn no importa; en cualquier caso, el archivo se sobrescribirá por completo con los datos nuevos. –
Ah, pero para mí falla, y el archivo original está intacto. Como writeToFile no devuelve un NSError, ¿cómo puedo investigar el error? puede ser un problema de permisos, pero no estoy seguro. Mi código se ejecuta como un Paquete de complementos del instalador, para un paquete de instalación que exige privilegios de administrador: no sé cómo verificar/imprimir los privilegios con los que se ejecuta mi código. –