2013-10-04 70 views
0

我有这样的代码:NSRange长度变化为0

for (TFHppleElement *element in htmlNodes) { 

    if (![element.tagName isEqual:@"img"]) { 

     NSString *elementHtmlCode = htmlCode; 

     if (element.text != nil) { 

      NSString *elementText = element.text; 

      NSRange textRange = [elementHtmlCode rangeOfString:elementText]; 

      elementHtmlCode = [elementHtmlCode stringByReplacingCharactersInRange:textRange withString:word]; 

      [htmlCode setString:elementHtmlCode]; 

      for (TFHppleElement *child in element.children) { 

       if (child.text != nil) { 

        NSString *childText = child.text; 

        NSString *childHtmlCode = htmlCode; 

        NSRange textRange = [childHtmlCode rangeOfString:childText]; 

        childHtmlCode = [childHtmlCode stringByReplacingCharactersInRange:textRange withString:word]; 

        [htmlCode setString:childHtmlCode]; 

       } 
      } 
     } 
    } 
} 

我的问题是第一个完整的循环是完整的,当再次进入后:

NSRange textRange = [elementHtmlCode rangeOfString:elementText]; 
elementHtmlCode = [elementHtmlCode stringByReplacingCharactersInRange:textRange withString:word]; 

我对textRange.length得到0 。

我已经在这条线上设置了一个断点,并且在进程运行这一行后,我可以看到长度变为0的值。

我失踪了什么?

谢谢!

回答

0

rangeOfString:如果在接收器中未找到指定的字符串,则返回一个{NSNotFound,0}矩形。 首先检查两个对象的值elementHtmlCode和elementText。 请参阅您的代码的上下文,它可能与两个字符串的任何值。 享受!