2012-04-14 13 views
1

Ich versuche, einen Ordner mit Cocoa programmgesteuert zu erstellen.Erstellen Sie einen Ordner (Bundle) in Cocoa

Ich habe eine NSString Kategorie geschrieben und wir haben die folgende Funktion ankam:

- (void)createAsFolder 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError* err = nil; 

    [fileManager createDirectoryAtPath:self withIntermediateDirectories:YES attributes:nil error:&err]; 

    if (err) 
    { 
     NSLog(@"ERROR : %@",err); 
    } 
} 

So, in wenigen Worten, lassen Sie uns sagen, dass wir eine NSString* path = @"/some/path/is/here"; haben, können wir es schaffen, einfach durch:

[path createAsFolder]; 

die Sache ist, obwohl es sich in normale Ordner funktioniert, ist es nicht der Fall ist, wenn der angegebene Pfad ein Bündel ist (das heißt: mit einer Verlängerung). Zum Beispiel

NSString* path = @"/this/is/a/path/to/some/bundle.bun"; 

[path createAsFolder]; 

Das obige funktioniert nicht.

Irgendwelche Ideen, wie das zu beheben?

+0

Erhalten Sie einen Fehler? –

+0

@EvanMulawski Nein, absolut kein Fehler (und absolut kein Bündel/Ordner an der richtigen Stelle, wo es sein sollte); Ich habe alle Pfade durch Protokollierung überprüft - sie sind korrekt. Ich kopiere grundsätzlich eine ganze Dateibaumstruktur von einem Ort zum anderen. Und alles kopiert großartig, außer für die Bündel (und deren Inhalt). –

Antwort

1
+0

Ich habe 'NSFileWrapper' wie 10 Mal studiert und es als eine mögliche Lösung abgetan. Du hast mir gesagt, dass ich es noch einmal nachprüfen soll, ließ mich darüber nachdenken ... Ja, du warst zu 100% richtig. Ich habe eine Funktion für die Verzeichnisbäume geschrieben, eine zum Kopieren einer Datei, eine zum Erstellen eines Ordners (der nicht ganz funktionierte, da er auf Paketen/Bündeln gestoßen war), und einen zum Durchlaufen des gesamten Baumes und zum Erstellen der Unterknoten, während all dies mit 2 lausigen Linien gemacht werden könnte ... Manchmal fühle ich mich irgendwie albern ... Vielen Dank, Kumpel! :-) –

+0

Es war wirklich ein Schuss in die Dunkelheit. Ich habe vor ein paar Tagen darüber gelesen, als ich das dokumentenbasierte Anwendungsdesign studierte, und ich dachte einfach, dass es funktionieren könnte;) – thundersteele

+0

Gut ... erschossen, dann! lol ;-) –

2

OK, hier ist die Antwort (dank @thundersteele), wenn Sie einen vollständigen Dateibaum von auf Ort zum anderes kopieren mögen:

NSFileWrapper* w = [[NSFileWrapper alloc] initWithPath:initialPath]; 

[w writeToFile:destinationPath atomically:YES updateFilenames:YES]; 

Und yep: es hat absolut keine Problem, ob die Unterordner Pakete/Bündel oder was auch immer sind. Nicht so schwer, oder? Nur 2 Zeilen ... lol

+1

Diese Methode wird ab OS X 10.6 abgeschrieben, Sie sollten writeToURL verwenden: options: originalContentsURL: error: stattdessen. – rdelmar