Я новичок в iOS. Я пытался создать простой rss-ридер, используя MWFeedParser. Я не получаю ошибку сборки, симулятор всплывает хорошо, но тогда симулятор не отображает RSS-каналы, но только пустой tableView. Я не могу придумать, что случилось. Любая помощь будет очень оценена. Благодарю.Я не знаю, что не так с моим кодом (rss reader с MWFeedParser)
// FeedTableViewController.swift
// RssReader
import UIKit
import MWFeedParser
class FeedTableViewController: UITableViewController, MWFeedParserDelegate {
var feedItems = [MWFeedItem]()
func request() {
let url = NSURL(string: "http://feeds.nytimes.com/nyt/rss/Technology")
//creating a feedparser object
let feedParser = MWFeedParser(feedURL: url as URL!)
feedParser?.delegate = self
feedParser?.parse()
}
// MARK: - FEED PARSER DELEGATE
func feedParserDidStart(_ parser: MWFeedParser!) {
feedItems = [MWFeedItem]()
}
func feedParserDidFinish(_ parser: MWFeedParser!) {
self.tableView.reloadData()
}
func feedParser(_ parser: MWFeedParser!, didParseFeedInfo info: MWFeedInfo!) {
print(info)
self.title = info.title
}
func feedParser(_ parser: MWFeedParser!, didParseFeedItem item: MWFeedItem!) {
feedItems.append(item)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
request()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//height for rows
return 100
}
override func numberOfSections(in tableView: UITableView) -> Int {
// return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return the number of rows
return feedItems.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
// Configure the cell...
let item = feedItems[indexPath.row] as MWFeedItem
cell.textLabel?.text = item.title
return cell
}
}
Не уверен, как работает эта библиотека, но, вероятно, ничего не держит в руках ваш feedparser, и он освобождается сразу после запуска запроса. Попробуйте использовать свойство, чтобы у вас была сильная ссылка на парсер. – Moxy
@Moxy Спасибо, что нашли время ответить. Я полностью основал эту программу на учебнике [https://www.youtube.com/watch?v=jootsUaCvAU], но выполнил его. Не могли бы вы помочь в разработке свойств, содержащих ссылки. Еще раз спасибо. –