2011-08-12 6 views
10

He intentado anexar cadenas a un archivo de recursos local, pero tengo problemas para encontrar una solución. Estoy tratando de crear un archivo de registro para todas las llamadas de función en mi aplicación, por lo que si se bloquea, puedo ver en qué función se detuvo.Cómo agregar una cadena en el archivo txt de recursos locales para iOS sdk

He creado un archivo log.rtf, pero no puedo escribir en este archivo. ¿Puede alguien ayudarme a agregar una cadena a este archivo sin tener que sobrescribir todo?

Respuesta

31

que tengo uso siguiente código para el problema anterior.

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [documentPaths objectAtIndex:0]; 
NSString *logPath = [[NSString alloc] initWithFormat:@"%@",[documentsDir stringByAppendingPathComponent:@"log.rtf"]]; 
NSFileHandle *fileHandler = [NSFileHandle fileHandleForUpdatingAtPath:logPath]; 
[fileHandler seekToEndOfFile]; 
[fileHandler writeData:[text dataUsingEncoding:NSUTF8StringEncoding]]; 
[fileHandler closeFile]; 
0
- (void)log:(NSString *)message { 
    NSMutableString *string = [[NSMutableString alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/log.txt", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]]]; 
    if (!string) string = [[NSMutableString alloc] init]; 
    [string appendFormat:@"%@\r\n", message]; 
    [string writeToFile:[NSString stringWithFormat:@"%@/log.txt", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
} 
+0

@ Tim, 'WriteToFile: atómicamente:' está en desuso desde XCode 4.1 –

+0

He actualizado mi código =)! – elslooo

+1

¿Qué pasa si el tamaño del archivo es superior a 10k. Entonces, la cadena mutable no puede contener esta cantidad de datos, entonces causará el bloqueo de la aplicación. Por favor intente esto y hágamelo saber. Tome un txt doc. Con un tamaño de 10k e intenta agregar una línea usando este código. –

0

De esta manera usted puede hacer esto ..

+ (void)WriteLogWithString:(NSString *)log 
{ 

     if(log != nil){ 

      NSString *locationFilePath = [self getLogFilePath];//access the path of file 

      FILE *fp = fopen([locationFilePath UTF8String], "a"); 

      fprintf(fp,"%s\n", [log UTF8String]); 

      fclose(fp); 
     } 

} 
+0

gracias Sachin, pero esto se agregará al inicio de su archivo, no al final del archivo. –

Cuestiones relacionadas