2012-06-15 6 views
11

Por lo tanto, en mi aplicación tengo un montón de datos que me gustaría escribir en un archivo de registro y luego mostrarlos en un UITextView cuando hago clic en un botón. Sé cómo alternar el UITextView, pero no tengo idea de cómo crear y actualizar un archivo de registro (en el sistema de archivos local). Gracias por cualquier ayuda.Crear un archivo de registro en una aplicación de iOS

Respuesta

32

La idea básica es crear el archivo y anexarlo cada vez que inicie una nueva línea. Puede hacerlo con bastante facilidad como esto:

escribir en el archivo:

NSString *content = @"This is my log"; 

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

//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]; 

lectura:

//get file path 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myFileName.txt"]; 

//read the whole file as a single string 
NSString *content = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil]; 
+0

No le gusta '[NSFileHandle fileHandleForUpdatingAtPath: logPath];' 'logPath' diciendo que es el uso del identificador no declarado. ¿Podría aclararlo? –

+0

Malo - reemplace logPath con fileName. Variable incorrecta – CrimsonDiego

+1

Gracias. Aunque hice todo lo que dijo, y luego cuando quise agregar los datos a mi UITextView, usando 'logFile.text = [NSString stringWithContentsOfFile: fileName encoding: NSUTF8StringEncoding error: nil];' No apareció nada. Hice algunas depuraciones y vi que el archivo de registro en sí era nulo. ¿Tienes alguna idea de por qué? –

1

que pensé que era una clase que hay que hacer esto de forma automática ya que después no hubo suerte creado mío.

NSLogger es una clase liviana para las versiones de iOS 3.0 y superiores. Permite a los desarrolladores registrar fácilmente diferentes 'eventos' a lo largo del tiempo que se almacenan localmente como un archivo .txt.

https://github.com/northernspark/NSLogger

Cuestiones relacionadas