質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1524閲覧

複数サイトのRSSフィードを1つのタブに表示させる方法 (RSSフィードを使ったニュースキュレーションアプリ)

退会済みユーザー

退会済みユーザー

総合スコア0

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/08/17 08:17

前提・実現したいこと

プログラミング(swift)を勉強し始めて1週間程度の超初心者です。

progateをさらっとやったくらいで、まだ右も左も分からない状態です...。

RSSフィードを使ったニュースキュレーションアプリを作ろうと試みているところで、以下の物を使用しています。

使っているRSSフィードのサイト:
https://news.finance.yahoo.co.jp/cp_list/
https://jp.investing.com/webmaster-tools/rss

使っているタブのライブラリ
https://github.com/Jiar/SegementSlide

発生している問題・エラーメッセージ

RSSフィードを取得して、1つのタブに1つのサイトの記事を表示させることはできました。

しかし、SmartNewsとかのように、1つのタブ、例えば"エンタメ"というタブの中にabemaTimesやスポーツ報知など、複数のサイトの記事を表示させるやり方がどうしてもわかりません。

import

1import SegementSlide 2 3class Page10ViewController: UITableViewController,SegementSlideContentScrollViewDelegate,XMLParserDelegate { 4 5 var parser = XMLParser() 6 7 var newsItems = [NewsItems]() 8 9 var currentElementName: String! 10 11 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 16 17 tableView.backgroundColor = .clear 18 19 let image = UIImage(named: "9.jpg") 20 let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: self.tableView.frame.size.height)) 21 imageView.image = image 22 self.tableView.backgroundView = imageView 23 24 25 let urlString: String = "https://news.finance.yahoo.co.jp/rss/cp/coindesk.xml" 26 let url: URL = URL(string: urlString)! 27 parser = XMLParser(contentsOf: url)! 28 parser.delegate = self 29 30 31 parser.parse() 32 } 33 34 @objc var scrollView: UIScrollView { 35 return tableView 36 } 37 38 39 override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 40 41 return self.view.frame.size.height/3 42 43 44 } 45 46 47 override func numberOfSections(in tableView: UITableView) -> Int { 48 49 return 1 50 } 51 52 53 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 54 55 return newsItems.count 56 57 58 } 59 60 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 61 62 let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "Cell") 63 cell.backgroundColor = .clear 64 let newsItem = self.newsItems[indexPath.row] 65 cell.textLabel?.text = newsItem.title 66 cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 15.0) 67 cell.textLabel?.textColor = .black 68 cell.textLabel?.numberOfLines = 0 69 70 71 cell.detailTextLabel?.text = newsItem.pubDate 72 cell.detailTextLabel?.textColor = .black 73 74 return cell 75 } 76 77 func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { 78 79 currentElementName = nil 80 if elementName == "item" { 81 self.newsItems.append(NewsItems()) 82 } else { 83 84 currentElementName = elementName 85 86 } 87 88 } 89 90 func parser(_ parser: XMLParser, foundCharacters string: String) { 91 92 if self.newsItems.count > 0 { 93 94 let lastItem = self.newsItems[self.newsItems.count - 1] 95 96 switch self.currentElementName { 97 98 case "title": 99 lastItem.title = string 100 101 case "link": 102 lastItem.url = string 103 104 case "pubDate": 105 lastItem.pubDate = string 106 print(lastItem.pubDate as Any) 107 default: break 108 109 } 110 111 } 112 113 } 114 115 func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 116 117 self.currentElementName = nil 118 119 120 } 121 122 func parserDidEndDocument(_ parser: XMLParser) { 123 124 self.tableView.reloadData() 125 126 127 } 128 129 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 130 131 let webViewController: UIViewController = WebViewController() 132 133 webViewController.modalTransitionStyle = .crossDissolve 134 let newsItem = newsItems[indexPath.row] 135 UserDefaults.standard.set(newsItem.url, forKey: "url") 136 137 138 self.present(webViewController, animated: true, completion: nil) 139 140 } 141 142} 143 144 145コード

このURLを書いたところををどうにかすればいいのでしょうか?

let

1 let url: URL = URL(string: urlString)! 2 parser = XMLParser(contentsOf: url)! 3 parser.delegate = self 4コード

とりあえず、隣にURLを追加することを試してみたら、逆に記事が表示されなくなってしまいました。

イメージ説明

どなたか対処法をご教授くださると幸いです…。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

RSSをまとめられるサイトがあったので解決できました。

投稿2019/08/17 08:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問