Почему при вызове XMLParser (contentsOfURL: rssURL) выдается ошибка: «Аргумент передан в вызов без аргументов»? - PullRequest
0 голосов
/ 07 мая 2019

Я работал над этим уроком 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)

Однако я получаю ту же ошибку - есть идеи, что я сделал неправильно?

1 Ответ

0 голосов
/ 07 мая 2019

Вам лучше найти современную статью, чем смотреть археологические находки древнего Свифта.

Как видите, NSXMLParser переименован в XMLParser, и введен новый тип URL.

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

Пожалуйста, проверьте последние документы .


UPDATE

Пожалуйста, попробуйте это:

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

В старом, старом уроке вы определяете класс XMLParser. Таким образом, вам может потребоваться различить два XMLParser, Apple и ваш собственный.

Я настоятельно, настоятельно и очень настоятельно рекомендую вам найти современное руководство или пример, написанный для современного Swift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...