2017-08-23 1 views
0

Ich schreibe eine Anwendung für die Apple Watch. Ich verwende die folgende Methode (von this SE answer) in eine Protokolldatei zu schreiben: esLeere Dokumente Verzeichnis nach dem Erstellen der Datei mit NSFileHandle

- (void) writeLogWith: (NSString *) content { 

    //Get the file path 
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"whathappened.md"]; 

    //create file if it doesn't exist 
    if(![[NSFileManager defaultManager] fileExistsAtPath:fileName]) 
     [[NSFileManager defaultManager] createFileAtPath:fileName contents:nil attributes:nil]; 

    //append text to file (you'll probably want to add a newline every write) 
    NSFileHandle *file = [NSFileHandle fileHandleForUpdatingAtPath:fileName]; 
    [file seekToEndOfFile]; 
    [file writeData:[content dataUsingEncoding:NSUTF8StringEncoding]]; 
    [file closeFile]; 

    return; 
} 

Ich laufe durch in meinem Telefon anschließen und direkt auf meiner Uhr läuft. Die Funktion wird definitiv ausgeführt (ich habe mit dem Debugger gedacht) und weiß auch, dass die Datei existiert und nicht wiederholt versucht, sie zu erstellen.

Xcode sagt mir, dass die Dateiinformationen:

Printing description of documentsDirectory: 
/var/mobile/Containers/Data/PluginKitPlugin/8503AD6C-6EC9-4522-A867-27109B01B615/Documents 
Printing description of documentsDirectory: 
(NSString *) documentsDirectory = 0x16d66890 
Printing description of fileName: 
(NSString *) fileName = 0x16d66950 
Printing description of fileName: 
/var/mobile/Containers/Data/PluginKitPlugin/8503AD6C-6EC9-4522-A867-27109B01B615/Documents/whathappened.md 

Ich mag wissen würde, wenn es die Dinge richtig zu schreiben, aber wenn ich am Behälter aussehen (nach these SE answers), das Dokumentenverzeichnis leer ist. enter image description here

Meine Frage ist: Wohin ging meine Datei? Und wie kann ich es finden?

+0

Haben Sie, dass die Datei geschrieben zu werden, ist eigentlich überprüft? –

+0

Das ist etwas, was ich versuche zu tun. Wenn ich die if-Anweisung durchtrete, antwortet sie, als ob die Datei existiert ... – Joe

+0

Hat meine Antwort Ihnen geholfen? Versuchen Sie, meinen gesamten Code zu kopieren und zu verwenden. –

Antwort

0

Ich denke, was könnte Ihnen Probleme geben ist das NSFileHandle Objekt. Ich habe Tausende und Abertausende von Dateien in den Dokumentenordner geschrieben und ich habe nie NSFileHandle verwendet, um dies zu tun. Verwenden Sie einfach die integrierte Methode NSString, um Ihre Zeichenfolge in den Dateipfad zu schreiben.

Try this:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *filePath = [[documentsDirectory stringByAppendingPathComponent:@"whathappened"] stringByAppendingPathExtension:@"md"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
    [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]; 
} 

NSString *string = @"The String You Want To Write."; 

NSError *error; 
[string writeToFile:filePath atomically:false encoding:NSUTF8StringEncoding error:&error]; 

if (error) { 
    NSLog(@"There was an error writing file\n%@", error.localizedDescription); 
} 

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 
    NSLog(@"File exists :)"); 
} 
else { 
    NSLog(@"File does not exist :("); 
} 
+0

Ich fürchte, das machte keinen Unterschied (obwohl ich es versucht habe). Die Datei wird geschrieben, und die Uhr kann sie finden, wenn ich wieder reingehe, aber das ist alles, was ich habe. – Joe

Verwandte Themen