0

我正在尝试编写将 amethod提取HTML tag到数组中的 a,因为我想以树结构解析网页。

  func extractStringFromHTMLInsideTags(htmlString:String, htmlTagPairArray:[String], saveToArray:[String]) -> String
{
    var htmlNSString     = htmlString as NSString
    var lenght           = htmlNSString.length

    var openingTag       = htmlTagPairArray[0] as NSString
    var openingTagLength = openingTag.length

    var closingTag       = htmlTagPairArray[1] as NSString
    var closingTagLength = closingTag.length

    if (htmlString.rangeOfString(htmlTagPairArray[0]) != nil)
    {
        let rangeStart:NSRange! = htmlNSString.rangeOfString(htmlTagPairArray[0], options: NSStringCompareOptions.CaseInsensitiveSearch)
        var rangeEnd:NSRange!   = htmlNSString.rangeOfString(htmlTagPairArray[1], options: NSStringCompareOptions.CaseInsensitiveSearch)

        let startTagIndex: Int  = rangeStart.location + openingTagLength
        let boldTextLenght: Int = rangeEnd.location - rangeStart.location - openingTagLength
        let endTagIndex: Int    = startTagIndex + boldTextLenght


        let startIndex          = advance(htmlString.startIndex,startTagIndex)//advance as much as you like
        let endIndex            = advance(htmlString.startIndex,endTagIndex)
        let range               = startIndex..<endIndex
        var resultString        = htmlString.substringWithRange( range )

        saveToArray.append(resultString)

        resultString = htmlString.stringByReplacingOccurrencesOfString(htmlTagPairArray[0] + resultString + htmlTagPairArray[1], withString: resultString, options: nil, range: nil)

        if (resultString.rangeOfString(htmlTagPairArray[0]) != nil)
        {
            resultString = extractStringFromHTMLInsideTags(resultString,htmlTagPairArray:htmlTagPairArray, saveToArray:saveToArray)
        }

        return resultString

    }

    return htmlString
}

在线上:

saveToArray.append(resultString)

我收到错误消息:

'[String]' 类型的不可变值只有名为 'append' 的变异成员

错误状态saveToArray是不可变的。我认为数组是通过引用复制的......?

为什么会这样?

(我使用的是 Swift 2.0 和 Xcode 7.1)。

4

1 回答 1

2

默认情况下,方法中传递的参数是不可变的 ( let)。
添加关键字var以使其可变

func extractStringFromHTMLInsideTags(htmlString:String, htmlTagPairArray:[String], var saveToArray:[String]) -> String
{ ...
于 2015-11-06T15:38:10.780 回答