2012-06-15 3 views
11

Итак, в моем приложении у меня есть куча данных, которые я бы хотел записать в файл журнала, а затем отобразите их в UITextView, когда я нажимаю кнопку. Я знаю, как переключать UITextView, но я понятия не имею, как создать и обновить файл журнала (в локальной файловой системе). Спасибо за любую помощь.Создание файла журнала в приложении iOS

ответ

32

Основная идея заключается в том, что вы создаете файл и добавляете его каждый раз, когда вы регистрируете новую строку. Вы можете сделать это довольно легко, как это:

Запись в файл:

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

Reading:

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

Он не любит '[NSFileHandle fileHandleForUpdatingAtPath: LogPath];' 'говоря, что logPath' является использование необъявленной идентификатора. Не могли бы вы прояснить это? –

+0

My bad - заменить logPath на fileName. Неверная переменная. – CrimsonDiego

+1

Спасибо. Хотя я сделал все, что вы сказали, а затем, когда я захотел добавить данные в свой UITextView, используйте 'logFile.text = [NSString stringWithContentsOfFile: fileName encoding: NSUTF8StringEncoding error: nil];' Ничего не появилось. Я сделал некоторую отладку и увидел, что сам файл журнала был нулевым. Вы знаете, почему? –

1

Я думал, что был класс там, чтобы сделать это автоматически после того, как не повезло, созданного мой собственный.

NSLogger - это легкий класс для iOS версии 3.0 и выше. Это позволяет разработчикам легко записывать различные «события» с течением времени, которые локально сохраняются как .txt-файл.

https://github.com/northernspark/NSLogger

Смежные вопросы