NSString: EOL и проблемы rangeOfString

Мог кто-то говорить мне, если я пропускаю что-то здесь... Я пытаюсь проанализировать отдельные объекты JSON из потока данных. Поток данных буферизуется в регулярном NSString, и отдельные объекты JSON очерчены маркером EOL.

if([dataBuffer rangeOfString:@"\n"].location != NSNotFound) {
  NSString *tmp = [dataBuffer stringByReplacingOccurrencesOfString:@"\n" withString:@"NEWLINE"];
  NSLog(@"%@", tmp);
 }

Код выше выводов "...} НОВАЯ СТРОКА {..." как ожидалось. Но если я изменяюсь "\n" в операторе "if" выше к "}\\n", я ничего не получаю.

1
задан carloe 10 June 2010 в 21:13
поделиться

1 ответ

Почему бы вам не использовать - (NSArray *) componentsSeparatedByString: (NSString * ) разделитель ? Вы можете задать ему разделитель @ "\ n" , и результатом будет удобный массив строк, представляющих ваши отдельные строки JSON, которые затем можно перебирать.

if([dataBuffer rangeOfString:@"\n"].location != NSNotFound) {
    NSArray* JSONstrings = [dataBuffer componentsSeparatedByString:@"\n"];

    for(NSString* oneString in JSONstrings)
    {
        // here's where you process individual JSON strings
    }
}

Если вы запутаетесь с завершающим символом "}", вы можете сделать данные JSON недействительными. Просто разбейте его и передайте в библиотеку JSON. После символа "}" легко может быть конечный пробел, который вызывает наблюдаемую вами проблему.

2
ответ дан 2 September 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: