提问人:laurie 提问时间:5/7/2019 更新时间:5/7/2019 访问量:106
为什么调用 XMLParser(contentsOfURL: rssURL) 会给出错误:“参数传递给不带参数的调用”?
Why calling XMLParser(contentsOfURL: rssURL) is giving error: 'Argument passed to call that takes no arguments'?
问:
我一直在学习本教程 https://www.appcoda.com/building-rss-reader-using-uisplitviewcontroller-uipopoverviewcontroller/ 其中一部分谈到了使用 NSXMLParser 解析 RSS 源:
以下是原始代码段方法:
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)
但是,我遇到了同样的错误 - 知道我做错了什么吗?
答:
0赞
OOPer
5/7/2019
#1
你最好找到一篇现代文章,而不是看一些古代斯威夫特的考古遗迹。
如您所见,已重命名为 ,并引入了一个新类型。NSXMLParser
XMLParser
URL
func startParsingWithContentsOfURL(rssURL: URL) {
guard let parser = XMLParser(contentsOf: rssURL) else {
//...
return
}
parser.delegate = self
parser.parse()
}
请查看最新文档。
更新
请试试这个:
func startParsingWithContentsOfURL(rssURL: URL) {
guard let parser = Foundation.XMLParser(contentsOf: rssURL) else {
//...
return
}
parser.delegate = self
parser.parse()
}
在旧的教程中,您定义了一个类。因此,您可能需要区分两个 s,Apple 的和您自己的。XMLParser
XMLParser
我强烈、强烈、非常强烈地建议你找到一个为现代 Swift 编写的现代教程或示例。
评论
0赞
laurie
5/7/2019
感谢您的回复。但是,返回相同的错误。
0赞
OOPer
5/7/2019
@laurie,我的代码找不到相同的错误。不过,我可能误以为出了什么问题,因为我无法重现.您可能正在项目中定义另一个。Argument passed to call that takes no arguments
XMLParser
0赞
laurie
5/7/2019
谢谢!更新后的版本不会引发错误。相信我,如果我能找到更新版本,我会使用它!我希望构建一个基本的 RSS 阅读器,然后在此基础上构建更多功能。
0赞
OOPer
5/7/2019
@laurie,我本可以找到许多使用“swift rss reader”搜索的文章或示例代码,其中一些是用现代 Swift(4 或 5)编写的。最好检查它是在过去两年或更短的时间内写的。您最好访问搜索结果中的两到三个页面。
评论
startParsingWithContentsOfURL
startParsingWithContentsOfURL