我正在尝试编写一个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)。
答案 0 :(得分:2)
默认情况下,方法中传递的参数是不可变的(let
)
添加关键字var
以使其变为可变
func extractStringFromHTMLInsideTags(htmlString:String, htmlTagPairArray:[String], var saveToArray:[String]) -> String
{ ...