私はiOSを初めて使っています。私はMWFeedParserを使用して簡単なRSSリーダーを構築しようとしていました。私はビルドエラーがなくなり、シミュレータが正常にポップアップしますが、シミュレータはRSSフィードを表示しませんが、tableViewだけを空白にします。 私は何が間違っていると考えることができません。どんな助力も非常に高く評価されます。ありがとう。私のコードに何が問題なのか分かりません(MWFeedParserのRSSリーダー)
// 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
}
}
このライブラリの動作についてはわかりませんが、おそらくフィードパースを保持するものは何もなく、要求の開始直後に割り当てが解除されます。パーサーを強く参照するためにプロパティを使用してみてください。 – Moxy
@Moxyご返信いただきありがとうございます。私はチュートリアル[https://www.youtube.com/watch?v=jootsUaCvAU]に完全に基づいていますが、私の方法でそれを実行しました。あなたは強い参照を保持しているプロパティの使用を手助けしてください。再度、感謝します。 –