NSString:EOL和rangeOfString问题

时间:2010-06-10 21:13:15

标签: iphone nsstring eol

有人可以告诉我,如果我在这里遗漏了一些东西......我正在尝试从数据流中解析单个JSON对象。数据流在常规NSString中缓冲,并且各个JSON对象由EOL标记描绘。

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

上面的代码按预期输出“...} NEWLINE {...”。但如果我将上面if语句中的@“\ n”更改为@“} \ n”,我什么也得不到。

1 个答案:

答案 0 :(得分:2)

为什么不使用 - (NSArray *)componentsSeparatedByString:(NSString *)separator?你可以给它一个@"\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库。在'}'之后很容易出现一个尾随空格,导致你正在观察的问题。