2010-08-28 1 views
0

У меня есть эта проводная проблема, я не могу получить содержимое из файла и инициировать с ним NSMutableArray.Содержимое не получено из файла

Вот мой код:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSLog(@"Does file exist?: %i", [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory]]); 

NSMutableArray *tempArr; 

tempArr = [[NSMutableArray alloc] initWithContentsOfFile:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory]]; 

При попытке это, initWithContentsOfFile возвращает (нуль). Строка, проверяющая, существует ли файл, печатает «1» на консоли.

Это код, я использую, чтобы сохранить данные:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
[length.text writeToFile:[NSString stringWithFormat: @"%@/length.txt", documentsDirectory] atomically:NO]; 

Я использую более или менее точно такой же код в другой программе без проблем.

действительно нужна помощь здесь, возможно, я просто слепой на данный момент ...

ответ

1

Документов для initWithContentsOfFile: метода NSArray говорят:

Возвращаемое значение Массив инициализируется содержит содержимое файла указанного aPath или ноль, если файл не может быть открыт или содержимого файла не может быть проанализирован в массив. Возвращенный объект может отличаться от , чем у исходного приемника.

Вы не включают в себя декларацию length во фрагменте кода, но я предполагаю, что length.text возвращает объект NSString, а не NSArray. Поэтому вам нужно будет прочитать это обратно из файла, используя initWithContentsOfFile: из NSString, а не NSArray.

+0

Спасибо! Я не думал о формате файлов, они, конечно, очень разные. В моей другой программе, с которой я скопировал код, я пишу и читаю с использованием массивов. – Nicsoft

+0

Рад, что это помогло! Иногда все, что требуется, - это свежая пара глаз на вашем коде. :) –

2

При попытке создать массив из содержимого файла, the file must be in plist format, а внешний наиболее PLIST элемент должен be <array>. Если он не имеет этого формата, инициализация завершится неудачно, и ваш массив будет nil.

Вы создаете файл, записывая файл NSString в файл, что означает, что вы, вероятно, должны его читать в NSString, а не NSArray.