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 に変化するのがわかります。

私は何が欠けていますか?

ありがとう!

4

1 に答える 1

0

rangeOfString: レシーバーで指定された文字列が見つからなかった場合、{NSNotFound, 0} rect を返します。最初に、2 つのオブジェクトの値 elementHtmlCode と elementText を確認します。コードのコンテキストを参照してください。2 つの文字列の任意の値で可能です。楽しみ!

于 2013-12-17T09:39:21.947 に答える