2012-06-20 14 views
6

Ich habe ein NSFileWrapper-Verzeichnis, in dem ich einen bestimmten FileWrapper aktualisieren möchte. Ich habe mich gefragt, was der beste Weg ist, dies zu tun?NSFileWrappers ersetzen

Bisher habe ich diesen Code verwendet haben:

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

Jedes Mal, wenn die FileWraper bereits vorhanden ist, ich Duplikate in meiner FileWrapper bekommen, die so aussehen:

"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>"; 

Wie kann ich das verhindern und ersetzen Sie einfach den FileWrapper - in diesem Fall photo.data? Ich habe keine Methode gefunden, FileWrappers im NSFileWrapper Class Reference zu ersetzen.

Antwort

5

ich denke, das die Lösung sein kann:

es war für mich
NSFileWrapper *oldFileWrapper = [self.fileWrapper.fileWrappers objectForKey:fileName]; 
if (oldFileWrapper) [self.fileWrapper removeFileWrapper:oldFileWrapper]; 

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

Ich stolperte über dieses Problem und weil ich einen Ordner mit dem Namen „Ressourcen“ hatte und eine namens „Ressourcen“. Dies führte zu einem iCloud-Problem, da unter Mac OS X das Dateisystem nicht case sensitive ist, aber es ist auf iOS.

Es sieht so aus, als ob das zugrunde liegende Problem in Ihrem Fall auch mit Groß-/Kleinschreibung zusammenhängt. Natürlich beheben Sie dies, indem Sie den Dateiwrapper ersetzen, der die Datei effektiv löscht und neu erstellt. Dies kann eine akzeptable Lösung für kleine Dateien sein, kann aber für größere oder viele Dateien in einem Verzeichnis sehr ineffizient sein (weil die Datei synchronisiert würde, selbst wenn sie sich nicht ändert).

+0

OS X-Dateisysteme kann die Groß-/Kleinschreibung beachten oder die Groß-/Kleinschreibung nicht beachten ... es hängt davon ab, wie der Benutzer das Laufwerk formatiert. –

+0

Das ist ein gültiger Punkt. Ich nehme das Standardformat (wie beim Kauf eines Mac) "Mac OS Extended (Journaled)" an. – auco