2012-06-20 17 views
6

Tengo un directorio NSFileWrapper en el que me gustaría actualizar un determinado FileWrapper. Me preguntaba cuál es la mejor manera de hacerlo.Reemplazo de NSFileWrappers

Hasta ahora he utilizado este código:

[self.fileWrapper addRegularFileWithContents:photoData 
          preferredFilename:@"photo.data"]; 

Sin embargo, cada vez que el FileWraper ya existe, recibo duplicados en mi FileWrapper que parecen tan:

"1__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6bb0260>"; 
"2__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6b89b80>"; 
"3__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6ba1700>"; 
"4__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6bc8480>"; 
"photo.data" = "<NSFileWrapper: 0x6bcfc50>"; 

¿Cómo puedo evitar que esto y simplemente reemplace FileWrapper, en este caso photo.data? No encontré ningún método para reemplazar FileWrappers en el NSFileWrapper Class Reference.

Respuesta

5

Creo que esto puede ser la solución:

NSFileWrapper *oldFileWrapper = [self.fileWrapper.fileWrappers objectForKey:fileName]; 
if (oldFileWrapper) [self.fileWrapper removeFileWrapper:oldFileWrapper]; 

[self.fileWrapper addRegularFileWithContents:[self encodeObject:object] 
          preferredFilename:fileName]; 
0

Me tropecé con este tema y para mí era porque tenía una carpeta con el nombre "Recursos" y uno llamado "recursos". Esto creó un problema de iCloud porque en Mac OS X el sistema de archivos no distingue entre mayúsculas y minúsculas, pero está en iOS.

Parece que el problema subyacente en su caso también podría estar relacionado con mayúsculas/minúsculas. Por supuesto, está solucionando esto al reemplazar el contenedor de archivos, que efectivamente elimina y recrea el archivo. Esta podría ser una solución aceptable para archivos pequeños, pero puede ser muy ineficiente para archivos más grandes o muchos en un directorio (porque el archivo se sincronizaría aunque no cambiara).

+0

Los sistemas de archivos OS X pueden distinguir entre mayúsculas y minúsculas o distinguir entre mayúsculas y minúsculas ... depende de cómo el usuario formatea la unidad. –

+0

Ese es un punto válido. Asumo el formato predeterminado (como en el caso de comprar una Mac) "Mac OS Extended (Journaled)". – auco