Da Sie keinen absoluten Pfad verwendet haben, ist der Pfad relativ zum aktuellen Verzeichnis des Prozesses.
Wenn Ihre App Sandboxed ist, ist das aktuelle Verzeichnis das Verzeichnis Data
der App Sandbox. Aber ich denke, aufgrund Ihrer Symptome ist Ihre App nicht Sandboxed.
Wenn Ihre App nicht Sandbox ist, und Sie führen Sie es von Xcode, das aktuelle Verzeichnis ist das Verzeichnis der App enthalten (zum Beispiel /Users/mayoff/Library/Developer/Xcode/DerivedData/test-aegotyskrtnbeabaungzpkkbjvdz/Build/Products/Debug
). Ihre Benutzer-ID hat die Berechtigung zum Erstellen von Dateien in diesem Verzeichnis. Ihr Code funktioniert also, wenn Sie die App über Xcode ausführen.
Wenn Ihre App nicht Sandbox ist, und Sie führen Sie es, indem Sie im Finder Doppelklick auf das aktuelle Verzeichnis ist das Stammverzeichnis (/
). Ihre Benutzer-ID ist normalerweise nicht berechtigt, Dateien in diesem Verzeichnis zu erstellen. Ihr Code schlägt daher fehl, wenn Sie die App über den Finder ausführen.
Sie sollten entweder den Benutzer wählen lassen, wo die Datei zu schreiben ist, mit einem NSSavePanel
, oder Sie sollten die Datei in ein Verzeichnis schreiben, von dem Sie wissen, dass Sie Schreibzugriff haben, wie der Ordner Dokumente des Benutzers. Hier ist ein Code in den Ordner Dokumente zu schreiben:
NSURL *documentDirectoryUrl = [NSFileManager.defaultManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
NSURL *fileUrl = [documentDirectoryUrl URLByAppendingPathComponent:@"test.txt"];
NSString *someText = @"Hello world";
NSError *error;
if (![someText writeToURL:fileUrl atomically:YES encoding:NSUTF8StringEncoding error:&error]) {
// Error occurred. Details are in the error object.
}
Sie müssen NSSavePanel bedienen und ermöglichen dem Benutzer das Ziel oder deaktivieren APP Sandbox in Ihrem App Zielfunktionen wählen –
einige Code anzeigen. – bbum
Ich habe meinen Code aktualisiert, es ist nur ein einfaches Beispiel. Ich schließlich Datei in /Users/nubes/Library/Containers/nubes.fr.Proxy-Nubes-Cocoa/Data testen, wie kann ich es erstellen, wo immer die ausführbare Datei ist? – user3711521