Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ------------ TableViewController.swift ------
- import UIKit
- class TableViewController: UITableViewController, XMLParserDelegate {
- @IBOutlet weak var currenciesTableView: UITableView!
- var passName = false, passUnit = false, passCurrencyCode = false, passCountry = false, passRate = false, passChange = false
- var parser = XMLParser()
- var names:[String] = []
- var units:[String] = []
- var currCodes:[String] = []
- var countries:[String] = []
- var rates:[String] = []
- var changes:[String] = []
- let reuseIdentifier = "CurrencyCell"
- let myUrl: String = "https://www.boi.org.il/currency.xml"
- override func viewDidLoad() {
- super.viewDidLoad()
- print("Load XML")
- let url: URL = URL(string: myUrl)!
- parser = XMLParser(contentsOf: url)!
- parser.delegate = self
- let allOK: Bool = parser.parse()
- if allOK {
- print ("we have an xml")
- } else {
- print ("Error in data")
- }
- currenciesTableView.delegate = self
- currenciesTableView.dataSource = self
- //currenciesTableView.register(CurrencyTableViewCell.self, forCellReuseIdentifier: reuseIdentifier)
- // Uncomment the following line to preserve selection between presentations
- // self.clearsSelectionOnViewWillAppear = false
- // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem
- }
- func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
- //check if we have start element
- switch elementName {
- case "NAME":
- passName = true
- case "UNIT":
- passUnit = true
- case "CURRENCYCODE":
- passCurrencyCode = true
- case "COUNTRY":
- passCountry = true
- case "RATE":
- passRate = true
- case "CHANGE":
- passChange = true
- default:
- break
- }
- }
- func parser(_ parser: XMLParser, foundCharacters string: String) {
- if passName{
- names.append(string)
- }
- if passUnit {
- units.append(string)
- }
- if passCurrencyCode {
- currCodes.append(string)
- }
- if passCountry {
- countries.append(string)
- }
- if passRate {
- rates.append(string)
- }
- if passChange {
- changes.append(string)
- }
- }
- func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
- //check if we have end element
- switch elementName {
- case "NAME":
- passName = false
- case "UNIT":
- passUnit = false
- case "CURRENCYCODE":
- passCurrencyCode = false
- case "COUNTRY":
- passCountry = false
- case "RATE":
- passRate = false
- case "CHANGE":
- passChange = false
- default:
- break
- }
- }
- func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) {
- print ("error:\(parseError)")
- }
- // MARK: - Table view data source
- override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- // #warning Incomplete implementation, return the number of rows
- return names.count
- }
- override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! CurrencyTableViewCell
- cell.nameValueLabel.text = names[indexPath.row]
- cell.unitValueLabel.text = units[indexPath.row]
- cell.currencyCodeValueLabel.text = currCodes[indexPath.row]
- cell.countryValueLabel.text = countries[indexPath.row]
- cell.rateValueLabel.text = rates[indexPath.row]
- cell.changeValueLabel.text = changes[indexPath.row]
- if Double(changes[indexPath.row])! < 0 {
- cell.backgroundColor = .red
- } else {
- cell.backgroundColor = .green
- }
- return cell
- }
- override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- return 150
- }
- }
- //----------- CurrencyTableViewCell.swift -----
- import UIKit
- class CurrencyTableViewCell: UITableViewCell {
- @IBOutlet var nameValueLabel: UILabel! = UILabel()
- @IBOutlet var unitValueLabel: UILabel! = UILabel()
- @IBOutlet var currencyCodeValueLabel: UILabel! = UILabel()
- @IBOutlet var countryValueLabel: UILabel! = UILabel()
- @IBOutlet var rateValueLabel: UILabel! = UILabel()
- @IBOutlet var changeValueLabel: UILabel! = UILabel()
- override func awakeFromNib() {
- super.awakeFromNib()
- // Initialization code
- }
- override func setSelected(_ selected: Bool, animated: Bool) {
- super.setSelected(selected, animated: animated)
- // Configure the view for the selected state
- }
- }
Add Comment
Please, Sign In to add comment