菜鸟教程小白 发表于 2022-12-11 18:45:10

ios - 我不知道我的代码有什么问题(带有 MWFeedParser 的 rss 阅读器)


                                            <p><p>我是 iOS 新手。我正在尝试使用 MWFeedParser 构建一个简单的 rss 阅读器。我没有得到构建错误,模拟器弹出很好,但是模拟器没有显示 RSS 提要,但只有空白的 tableView。
我想不出有什么问题。任何帮助将不胜感激。谢谢。</p>

<pre><code>//FeedTableViewController.swift
//RssReader

import UIKit
import MWFeedParser

class FeedTableViewController: UITableViewController, MWFeedParserDelegate {

    var feedItems = ()

    func request() {

      let url = NSURL(string: &#34;http://feeds.nytimes.com/nyt/rss/Technology&#34;)
      //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 = ()
    }


    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) -&gt; CGFloat {
      //height for rows
      return 100
    }

    override func numberOfSections(in tableView: UITableView) -&gt; Int {
      // return the number of sections
      return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      // return the number of rows
      return feedItems.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {
      let cell = tableView.dequeueReusableCell(withIdentifier: &#34;Cell&#34;, for: indexPath)

      // Configure the cell...
      let item = feedItems as MWFeedItem   
      cell.textLabel?.text = item.title

      return cell
    }

}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>实际上,您的代码不起作用,因为您不尊重 ATS。换句话说,您的供稿是 HTTP 而不是 HTTPS。</p>

<p>如果您打开控制台,您应该会看到以下消息</p>

<blockquote>
<p>App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app&#39;s Info.plist file.</p>
</blockquote>

<p>您可以通过在 <code>info.plist</code></p> 中设置异常来解决此问题

<p> <a href="/image/YwAL0.png" rel="noreferrer noopener nofollow"><img src="/image/YwAL0.png" alt="info.plist screenshot"/></a> </p>

<p>但考虑到 Apple 在不久的将来不会接受 ATS 异常(exception)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 我不知道我的代码有什么问题(带有 MWFeedParser 的 rss 阅读器),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41894358/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41894358/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 我不知道我的代码有什么问题(带有 MWFeedParser 的 rss 阅读器)