为什么调用XMLParser(contentsOfURL:rssURL)会给出错误:“传递给不带参数的调用的参数”?

时间:2019-05-06 22:45:55

标签: ios swift xml-parsing

我一直在研究本教程https://www.appcoda.com/building-rss-reader-using-uisplitviewcontroller-uipopoverviewcontroller/ 其中的一部分讨论了如何使用NSXMLParser解析RSS feed:

这是原始的代码段方法:

func startParsingWithContentsOfURL(rssURL: NSURL) {
        let parser = NSXMLParser(contentsOfURL: rssURL)
        parser.delegate = self
        parser.parse()
    }

但是,我看到NSXMLParser现在是XMLParser。我一直在尝试:

 func startParsingWithContentsOfURL(rssURL: NSURL) {
        func startParsingWithContentsOfURL(rssURL: NSURL) {
            let parser = XMLParser(contentsOfURL: rssURL)
            parser.delegate = self
            parser.parse()
        }
    }

这是我在其他地方看到过的模型,但是它给出了错误“传递给调用的参数不带参数”。虽然我认为该错误是不言自明的,但我在其他地方也看到过类似形式的代码,这些代码似乎(显然)对其他人有用。

我尝试的另一件事是:

let parser = XMLParser.init(contentsOf: rssURL)

但是我遇到同样的错误-知道我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

与观看古代雨燕的一些考古遗迹相比,您最好找到现代的文章。

如您所见,NSXMLParser重命名为XMLParser,并引入了新的类型URL

func startParsingWithContentsOfURL(rssURL: URL) {
    guard let parser = XMLParser(contentsOf: rssURL) else {
        //...
        return
    }
    parser.delegate = self
    parser.parse()
}

请检查the latest documentations


更新

请尝试以下操作:

func startParsingWithContentsOfURL(rssURL: URL) {
    guard let parser = Foundation.XMLParser(contentsOf: rssURL) else {
        //...
        return
    }
    parser.delegate = self
    parser.parse()
}

在旧的旧教程中,您定义了一个类XMLParser。因此,您可能需要区分两个XMLParser,Apple的和您自己的。

我强烈,强烈且非常强烈地建议您找到为现代Swift编写的现代教程或示例。