2013-10-04 2 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]; 

Я получаю 0 на textRange.length ,

Я установил точку останова на этой строке, и я вижу, что значение длины изменяется на 0 после того, как процесс запустил эту строку.

Что мне не хватает?

Спасибо!

ответ

0

rangeOfString: возвращает {NSNotFound, 0} rect, если он не нашел указанную строку в приемнике. Сначала проверьте элемент значения объекта twoHtmlCode и elementText. Обратитесь к контексту вашего кода, это возможно с любыми значениями для двух строк. Наслаждайтесь!

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

  • Нет связанных вопросов^_^