Cocoa-Touch - загрузка текстового файла в массив - PullRequest
6 голосов
/ 21 июля 2010

Что не так с моим кодом ... Я хочу, чтобы он читал текстовый файл, как

Элемент1

Элемент2

Item3

Item4

Item5

и разобрать его в массив, чтобы каждая строка была отдельным объектом в массиве.

Когда вы проверяете консоль, она печатает (null)

-(void)parseIntoArray{ //parse the files into seprate arrays.
    allPools = [[NSMutableArray alloc] initWithContentsOfFile:@"ALL_POOLS_NAMES"];
    NSLog(@"%@",allPools);
}

Я поместил текстовый файл в свой проект и скопировал его в место назначения.

1 Ответ

13 голосов
/ 21 июля 2010

Во-первых, можете ли вы проверить, что файл существует там, где вы ищете и доступен для чтения?Используйте

[[NSFileManager defaultManager] isReadableFileAtPath:aPath];

Во-вторых, что находится в вашем файле.Поведение initWithContentsOfFile:

Представление массива в файле, идентифицированном aPath , должно содержать только объекты списка свойств (NSString, NSData, NSArray или NSDictionaryобъекты).

Является ли ваш файл допустимым XML-файлом plist?

InResponse

Нельзя использовать конструктор NSArray initWithContentsOfFile: для анализа обычного текстового файла.

Вместо этого вы можете прочитать содержимое файла в память и самостоятельно разобрать его в массив.Для вашего примера вы можете использовать

//pull the content from the file into memory
NSData* data = [NSData dataWithContentsOfFile:aPath];
//convert the bytes from the file into a string
NSString* string = [[[NSString alloc] initWithBytes:[data bytes]
                                            length:[data length] 
                                          encoding:NSUTF8StringEncoding] autorelease];

//split the string around newline characters to create an array
NSString* delimiter = @"\n";
NSArray* items = [string componentsSeparatedByString:delimiter];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...