Wie man Wechselkurs von Internet-API in iOS schnellen Abruf

Dieses Tutorial ist für X-Code aktualisiert 7.3.1 & schnell 2.3

Die App soll Lösung einfacher für Benutzer, aber ich sehe noch viele Anwendungen, die Sie Wechselkurs hinzufügen manuell erzwingen. App Benutzer hat durch zusätzliche Schritt jedes Mal zu gehen Wechselkurs zu finden & manuell hinzufügen. Es wäre viel einfacher für Benutzer, wenn Sie automatisch Wechselkurs aus dem Internet holen kann.
Der Benutzer hat App zum Download über das Internet gibt es keine Möglichkeit um das heißt. Beim ersten Start nach der Installation können Sie Wechselkurs aus dem Internet holen. speichern Sie es dann für die Offline-Nutzung. Man könnte meinen Tutorial auf NSUserDefaults Schlüsselwertepaar zu speichern.

1. Zunächst lässt sich die x-Code-Projekt wie gewohnt eingestellt. Erstellen Sie neue einheitliche Sicht Anwendung X-Code-Projekt. Stellen Sie Projektnamen zu Wechselkurse & speichern Sie sie auf dem Desktop.

neue x-Code-Projekt

2. Zum Hauptstoryboard, löschen View-Controller & table-View-Controller

hinzufügen Tableview Controller

3. Wählen Sie Tabelle View-Controller & legen Sie es als Ausgangs-View-Controller

initial-View-Controller

4. Wählen Sie den Prototyp Zelle & legen Sie seine Kennung, Tablecell

Prototyp Zellenkennung

5. Wählen Sie Tabelle View-Controller, Gehe zu Editor -> In einbetten -> Navigation-Controller

Navigationsleiste hinzufügen

6. Löschen Sie nun View-Controller schnellen Datei & fügen Sie neue Kakao Touch-Klassendatei der Unterklasse UITableViewController

Kakao Touch-Klasse

7. Zum Hauptstoryboard, Auswahltabelle View-Controller & Set benutzerdefinierte Klasse RatesTableViewController

Set benutzerdefinierte Klasse

8. Erstellen Sie leere Array von String-Wechselkurse zu speichern, wie folgt

class RatesTableViewController: UITableViewController {
// 8
var exchangeRates = [String]()

9. Stellen mehrere Abschnitte zu 1 & festgelegte Anzahl von Zeilen pro Abschnitt auszutauschen Zählrate wie folgt

// MARK: - Table view data source
// 9
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return exchangeRates.count
}

10. Kommentar- Zelle für Zeile an der Indexpfad & Alle Artikel der Array auf View-Tabelle wie folgt

// 10
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath)

    // Configure the cell...
    cell.textLabel?.text = exchangeRates[indexPath.row]

    return cell
}

11. Im Hinblick erschufen Last URL-Anfrage & Sitzung wie folgt

override func viewDidLoad() {
    super.viewDidLoad()

    // 11
    let apiEndPoint = "https://api.fixer.io/latest"

    guard let url = NSURL(string: apiEndPoint) else {
        print("Url is not valid")
        return
    }

    let urlRequest = NSURLRequest(URL: url)

    let session = NSURLSession.sharedSession()

    // 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()
}

12. Jetzt werden wir Daten Aufgabenanfrage zu erstellen, wie folgt

    let session = NSURLSession.sharedSession()
    // 12
    let task = session.dataTaskWithRequest(urlRequest) { (data, response, error) in
        // 1
        guard error == nil else {
            print(error?.localizedDescription)
            return
        }
        // 2
        if let httpResponse = response as? NSHTTPURLResponse {
            //3
            if httpResponse.statusCode == 200 {
                print("Everything is ok")
            }
            else {
                print("Error fetching data")
            }
        }
        // 4
        guard let data = data else {
            print("No data received")
            return
        }
    }
    // 5
    task.resume()

    // 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()
}
  1. Wenn der Fehler nicht gleich Null ist, dann den Fehler auszudrucken & stoppen Rest der Ausführung von Code.
  2. Wenn die Antwort vom Typ HTTP-URL-Antwort ist auszupacken dann die optionale
  3. Wenn Antwortcode ist 200 dann ging alles glatt sonst gibt es einige Fehler, der behoben werden muss.
  4. Wenn keine Daten vom Server empfangen wird dann stoppen Rest der Ausführung von Code.
  5. Task-Sterne mit hängendem Zustand. Also eigentlich Aufgabe ausführen müssen Sie die Aufgabe wieder aufnehmen.

13. Die Daten, die wir empfangen wird, im JSON-Format & Jetzt werden wir in Wörterbuch konvertieren. Aus diesem Import Stiftung wie folgt

import UIKit
// 13
import Foundation

14. Konvertieren Sie JSON-Daten in Wörterbuch & ausdrucken, wenn es Fehler & drucken Sie das Wörterbuch wie folgt

        // 4
        guard let data = data else {
            print("No data received")
            return
        }
        // 14
        do {
            guard let exchangeDict = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject] else {
                print("Could not convert JSON to dictionary")
                return
            }
            print(exchangeDict.description)
        }
        catch {
            print("Error trying to convert JSON to dictionary")
        }
    }
    // 5
    task.resume()

15. Nun nehmen Informationen aus Wörterbuch & steckte es in Tabelle. Und Tabellenansicht wie folgt aktualisieren

            print(exchangeDict.description)
            //15
            // 1
            if let rates = exchangeDict["rates"] {
                // 2
               let currencies = ["AUD", "BGN", "BRL", "CAD", "CHF", "CNY", "CZK", "DKK", "GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PLN", "RON", "RUB", "SEK", "SGD", "THB", "TRY", "USD", "ZAR"]
                // 3
                for currency in currencies {
                    if let rate = rates[currency] as? Float {
                        self.exchangeRates.append("1 EUR = \(rate) " + currency)
                    }
                }
                // 4
                NSOperationQueue.mainQueue().addOperationWithBlock({ 
                    self.tableView.reloadData()
                })
            }
            // 5
            if let date = exchangeDict["date"] as? String {
                NSOperationQueue.mainQueue().addOperationWithBlock({ 
                    self.navigationController?.navigationBar.topItem?.title = "Updated on " + date
                })
            }
        }
        catch {
            print("Error trying to convert JSON to dictionary")
        }
    }
  1. Erste unwrap Wechselkurse von Wörterbuch
  2. Erstellen Sie Reihe von Währungen
  3. Gehen Sie durch jede Währung & hinzufügen Rate Array
  4. Alles, was in der Vernetzung geschieht im Hintergrund Warteschlange, aber Sie sollten in der Tabelle auf Haupt Warteschlange aktualisieren
  5. Holen Sie sich das Datum & Update Navigationstitel auf Hauptwarteschlange

16. Jetzt bauen und laufen App in iPhone 5s & Sie werden die folgenden Wechselkurs sehen

Wechselkurs App
Download von X-Code-Datei
Herausforderung 1: Fetch-Wechselkurs für alle Währungen für 1 US Dollar

USD-Wechselkurs
Herunterladen Herausforderung 1 Lösung
Herausforderung 2: Fetch Wechselkurs zwischen USD nur & INR & zwischen USD & EUR.

US Dollar, INR, EUR
Herunterladen Herausforderung 2 Lösung

Gesamt 2 Stimmen
0

Sagen Sie uns, wie kann ich dieses Tutorial verbessern?

+ = Stellen Sie sicher, Mensch oder Spambot ?