現在複数のサイトを利用してRSSリーダーを作成しているのですが、日付順に並び替えるためソートしたのですが1つのJSONの日付順、1つのJSONの日付順と個々にソートされて表示されてしまいます。
これを4つのJSONの日付順に表示したいのですがどうすれば良いかわかりません。
どなたかご教授していただけると幸いです。
以下コード
var NewDataArray = NSMutableArray() var myTableView : UITableView! var URL = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=表示したいRSS" var URL2 = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=表示したいRSS" var URL3 = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=表示したいRSS" var URL4 = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=表示したいRSS" var isLoading : Bool = false override func viewDidLoad() { super.viewDidLoad() let nib:UINib = UINib(nibName: "ItemCell", bundle: nil) self.myTableView.register(nib, forCellReuseIdentifier: "ItemCell") RSSArray() } func RSSArray() { getRSS() getRSS0() getRSS1() getRSS2() } func getRSS() { if let requestURL = Foundation.URL(string: URL) { Alamofire.request(requestURL, method: .get , parameters: nil).responseJSON { response in if response.result.isSuccess { let jsonDic = response.result.value as! NSDictionary let responseData = jsonDic["responseData"] as! NSDictionary let feed = responseData["feed"] as! NSDictionary if let entries = feed["entries"] as? NSArray { let timeArray : NSMutableArray = [] for i in 0..<entries.count { let dic = entries[i] as! NSDictionary let title = dic["title"] as! String let content = dic["content"] as! String let links = dic["link"] as! String let publishedDate = self.convertDateFormat(dic["publishedDate"] as! String) self.timeArray[i] = ["title": title,"link": links,"content": content, "publishedDate": publishedDate] } //publisheDateでソート let sd = NSSortDescriptor(key: "publishedDate", ascending: false) let sorted = self.timeArray.sortedArray(using: [sd]) as NSArray self.NewDataArray.addObjects(from: sorted as! [Any]) //self.NewDataArray = self.sortDate(entries, isAscending: false) DispatchQueue.main.async { self.myTableView.reloadData() } } } } } } //etc...... func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return NewDataArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // 再利用するCellを取得する. let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) as! ItemCell let Newdic = NewDataArray[indexPath.row] as! NSDictionary let title = Newdic["title"] as! String let publishedDate = Newdic["publishedDate"] as! String let links = Newdic["link"] as! String let contents = Newdic["content"] as! String let timedate = publishedDate cell.backgroundColor = UIColor(red: 250/255, green: 250/255, blue: 250/255, alpha: 1) let selectCell = UIView() selectCell.backgroundColor = UIColor.lightGray cell.selectedBackgroundView = selectCell cell.title.text = title cell.time.text = timedate return cell } //日付を変換 func convertDateFormat(_ dateStr:String) -> String { // 引数で渡ってきた文字列をNSDateFormatterでNSDateに直します let inFormatter = DateFormatter() inFormatter.locale = Locale(identifier: "en_US_POSIX") inFormatter.dateFormat = "E, dd MMM yyyy HH:mm:ss Z" let date:Date = inFormatter.date(from: dateStr)! // NSDateから指定のフォーマットの文字列に変換します let outFormatter = DateFormatter() outFormatter.dateFormat = "yyyy/MM/dd HH:mm" return outFormatter.string(from: date) }
回答1件
あなたの回答
tips
プレビュー