Ich bin neu in iOS. Ich habe versucht, einen einfachen RSS-Reader mit MWFeedParser zu bauen. Ich bekomme keinen Build-Fehler, der Simulator erscheint gut, aber der Simulator zeigt keine RSS-Feeds an, sondern nur das leere TableView. Ich kann nicht daran denken, was falsch ist. Jede Hilfe wird sehr geschätzt. Vielen Dank.Ich weiß nicht, was mit meinem Code falsch ist (RSS Reader mit 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
}
}
Ich bin mir nicht sicher, wie diese Bibliothek funktioniert, aber wahrscheinlich nichts, was sich an Ihrem FeedParser festhält, und es wird gleich nach dem Start der Anfrage freigegeben. Versuchen Sie, eine Eigenschaft zu verwenden, sodass Sie eine starke Referenz auf den Parser haben. – Moxy
@Moxy Vielen Dank, dass Sie sich die Zeit genommen haben, zu antworten. Ich habe dieses Programm vollständig auf einem Tutorial [https://www.youtube.com/watch?v=jootsUaCvAU] basiert, aber es auf meine Art und Weise durchgeführt. Könnten Sie bitte helfen, die Verwendung von Eigenschaften, die eine starke Referenz enthalten, näher auszuführen? Danke noch einmal. –