Добавить данные в NSMutableArray из текстового файла, разделенного переносом строки? - PullRequest
0 голосов
/ 21 июня 2011

У меня есть текстовый файл с некоторыми URL-адресами, подобными этомуперерыв.Как я могу добавить их как разные записи, разделенные переносами строк, в NSMutableArray?Спасибо:)

Ответы [ 4 ]

4 голосов
/ 21 июня 2011

Попробуйте что-то вроде этого:

NSMutableArray *txtLines = [NSMutableArray array];

[txtFile enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
    if ([line length] > 0) {
        [txtLines addObject:line];    
    }
}];

Обновление

@ Эван прав, вышеупомянутое работает, только если блоки доступны на вашей платформе.Директива компилятора вокруг этого кода должна учитывать это ограничение, например:

#if NS_BLOCKS_AVAILABLE

// iOS 4.0+ solution

#else

// iOS 2.0+ solution

#endif
2 голосов
/ 21 июня 2011
NSString *textFilePath = [[NSBundle mainBundle] pathForResource:@"urls" ofType:@"txt"];
NSString *fileContentsUrls = [NSString stringWithContentsOfFile:textFilePath encoding:NSUTF8StringEncoding error:nil];
NSArray *myArray = [urls componentsSeparatedByString:@"\n"];
2 голосов
/ 21 июня 2011
NSString *myListString = /* load / download file */
NSMutableArray *myList = [myListString componentsSeparatedByString:@"\n"];

Возможно, вам придется использовать <br/>, если это HTML.

Решение @ octy доступно только в iOS 4.0 или более поздней версии. Это решение iOS 2.0 или новее. Вы можете проверить версию iOS и выбрать, какую использовать:

BOOL useEnumeratedLineParsing = FALSE;
NSString *reqSysVer = @"4.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
    useEnumeratedLineParsing = TRUE;

Затем проверьте значение useEnumeratedLineParsing.

0 голосов
/ 21 июня 2011

Пока он не мега-большой, вы можете прочитать весь файл в строку NSString.

NSString *text = [NSString stringWithContentsOfFile:path encoding:NSUTF8Encoding error:nil];

Затем разбить строки:

NSArray *lines = [text componentsSeparatedByString:@"\n"];

и сделать этоmutable:

NSMutableArray *mutableLines = [lines mutableCopy];

Теперь, в зависимости от того, откуда ваш текстовый файл, вам, вероятно, нужно быть более осторожным.Он может быть отделен \r\n вместо \n, и в этом случае ваши строки будут содержать набор дополнительных \r символов.Вы можете исправить это после факта, используя что-то, чтобы удалить лишние пробелы (ваш файл также может содержать пустые строки, которые приведенные выше превратятся в пустые строки).файла, вам не придется беспокоиться об этом.(Но в таком случае, почему бы не прочитать plist вместо анализа простого текстового файла ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...