writeToFile ist nicht auf die Datei schreiben
Nun, ich bin ein problem, und ich habe gekämpft, mit ihm für ein paar Tage. Hier ist es: wenn man versucht zu schreiben, um eine xml-Datei (befindet sich in der xcode-Projekt, für welches ich entwickle) mit writeToFile, schreiben funktioniert nicht und ich kann nichts sehen in der xml-Datei, obwohl der bool-Wert, der zurückgegeben wird, von writeToFile wird ausgewertet zu true !! Neben der Datei-bytes null sind. Also, ich wäre wirklich dankbar, wenn jemand kann mir helfen mit, dass. Unten ist Teil der code, den ich schrieb,:
//writing to a file
NSString *pathOfFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"];
NSString *dummyString = @"Hello World!!\n";
NSFileManager *filemanager;
filemanager = [NSFileManager defaultManager];
//entering the first condition so I assured that the file do exists
if ([filemanager fileExistsAtPath:pathOfFile] == YES)
NSLog (@"File do exist !!!");
else
NSLog (@"File not found !!!");
BOOL writingStatus = [dummyString writeToFile:path atomically:YES encoding:NSUnicodeStringEncoding error:nil];
//Not entering this condition so I am assuming that writing process is successful but when I open the file I can't find the string hello world and file size shows 0 bytes
if(!writingStatus)
{
NSLog(@"Error: Could not write to the file");
}
Ich habe auch versucht, diese alternative, aber leider hat es nicht funktioniert auch.
NSString *hello_world = @"Hello World!!\n";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *directory = [paths objectAtIndex:0];
NSString *fileName = @"sample.xml";
NSString *filePath = [directory stringByAppendingPathComponent:fileName];
NSLog(@"%@",filePath);
BOOL sucess = [hello_world writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil];
if(!sucess)
{
NSLog(@"Could not to write to the file");
}
Reden wir über iOS-oder MacOS-X hier? Kennzeichnen Sie bitte Ihre Frage zu geben.
InformationsquelleAutor User897 | 2011-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
In das erste Stück code, wir können nicht sehen, die definition von
path
. Wenn das ein Tippfehler und du meintestfile_path
, das problem ist, dassfile_path
Punkte, um einen Pfad innerhalb des app-bundle. Können Sie nicht, schreiben Sie in Ihrem app-bundle. (Es sollten keine Tippfehler, da sollte man sich einfügen den code direkt.)Im zweiten Fall, ist es schwieriger zu sagen, was das problem ist.
filePath
sollte in das Verzeichnis Dokumente, die beschreibbar ist. Dennoch wäre es viel einfacher, das problem zu diagnostizieren, wenn Sie immer waren, einen tatsächlichen Fehler. Statt der übergabenil
für die Fehler parameter in-writeToFile:atomically:encoding:error:
erstellen Sie eineNSError*
variable und übergeben deren Adresse. Wenn es ein problem gibt, dann werden die Zeiger gesetzt werden, deuten auf ein NSError-Objekt, das das problem beschreibt.Nein, Sie darf nicht schreiben, um Ihre app-bundle. Selbst wenn Sie könnte einen Weg finden, dies zu tun, Ihre Daten wäre nicht gesichert, wenn der Benutzer synchronisieren, und Sie würden erlöschen der Signatur, erlaubt die app zu laufen.
InformationsquelleAutor Caleb
Die Tatsache, dass
writeToFile:
ist ein boolescher Wert zurückgegeben, der JA einfach bedeutet, dass der Anruf beendet wird.Sollten Sie die übergabe einer
NSError**
zuwriteToFile:
und Prüfung e.g:Das sollte Ihnen einen guten Anhaltspunkt über das, was schief läuft (vorausgesetzt, der Fehler ist nicht null nach dem Aufruf).
InformationsquelleAutor Mark Granoff
InformationsquelleAutor
InformationsquelleAutor