Swift 2.0 - 错误:类型' [String]'的不可变值只有名为'追加'的变异成员

时间:2015-11-06 15:30:02

标签: arrays string swift xcode7 ios9.1

我正在尝试编写一个method,它将HTML tag提取到一个数组中,因为我想在树结构中解析一个网页。

  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)

我收到错误:

  

类型的不可变值&#39; [String]&#39;只有变异成员命名   &#39;附加&#39;

错误表明saveToArray是不可变的。我以为数组是通过引用复制的??

为什么会这样?

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

1 个答案:

答案 0 :(得分:2)

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

func extractStringFromHTMLInsideTags(htmlString:String, htmlTagPairArray:[String], var saveToArray:[String]) -> String
{ ...