NSFileHandle fileHandleForWritingAtPath gibt Null mit gültigem Pfad zurück
-
21-12-2019 - |
Frage
Ich habe ein paar Dinge zu diesem Problem gefunden, aber bisher hat nichts funktioniert.
Ich versuche, mit dem folgenden Code an das Ende einer Datei zu schreiben:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Filename" ofType:@"txt"];
NSString *textToWrite = @"Test";
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[textToWrite dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
Wenn ich den Code durchgehe, wird filePath auf „/var/mobile/Applications/1669D96A-1ABA-4A4F-D083-A90EB728691B/MyApp.app/Filename.txt“ gesetzt.
Allerdings gibt das NSFileHandle fileHandleForWritingAtPath Null zurück.Der Code löst keine Ausnahme/Warnung aus und fährt fort, als wäre alles in Ordnung.Wenn ich die Datei in eine Zeichenfolge einlese, ist der neue Text nicht vorhanden, sondern nur der Inhalt, der ursprünglich in der Datei enthalten ist (in Xcode eingegeben).Ich verwende genau denselben Code, um den Pfad zum Lesen der Datei zu ermitteln, und das funktioniert!
Lösung
Das App-Bundle ist schreibgeschützt.Sie können auf keinen Pfad im Bundle schreiben.Deshalb erhalten Sie eine nil
Dateihandle.