2016-03-12 3 views
0

У меня есть большая строка с разрывами строк.obj-c цикл над строкой/строкой в ​​обратном порядке

NSString *exampleString = @"Many Lines \ 
          Continue down \ 
          Every line correctly has a character return at the end"; 

Это в основном файл журнала, меня интересуют только последние несколько записей, которые постоянно обновляются.

Мне интересно, есть ли функциональность строки для этого и включить регулярное выражение или точную фразу, чтобы пройти строку по прямой в обратном порядке, или мне лучше включить строку в массив, а затем перебрать массив по строкам в обратном порядке для поиска и совпадения процессов?

+0

Вы действительно читаете из файла, или у вас уже есть строка в памяти? Если у вас есть дескриптор файла и он обновляется другим процессом или дескриптором, расположение вашего дескриптора в файле не изменится. Вы можете просто прочитать, с чего вы остановились. –

ответ

0

Следующая является скелетная структура:

NSArray* substringsArray = [exampleString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 

[substringsArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 

    if (idx < 5) { 

     // first 5 objects 

     NSString* substring = (NSString*)obj; 

     // Do whatever 
    } 
}]; 

NSArray* substringsArray = [exampleString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet] сломается вашу единственную строку в массив подстрок, на основе символов новой строки. enumerateObjectsUsingBlock: будет перечислить подстроки в массиве так, чтобы obj здесь будет подстрокой. idx расскажет вам, какой индекс этой строки находится в массиве.

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