Swift in realen Projekten: Unternehmensfälle, die Sie überraschen werden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Swift: Nicht nur eine Sprache für "Apple"-Apps

\n\n

Wenn "Swift" erwähnt wird, stellen sich viele sofort eine weitere App zum Kaffeebestellen oder einen Fitness-Tracker vor. Doch die Realität ist weitaus interessanter. Diese Sprache hat die iOS-Sandbox längst hinter sich gelassen und wird in Projekten eingesetzt, bei denen Millionen von Nutzern und Milliarden von Anfragen pro Tag auf dem Spiel stehen. Uber, Airbnb, Lyft – das sind nicht nur Namen, sondern lebendige Beispiele dafür, wie Swift in realen Projekten anspruchsvolle Aufgaben löst.

\n\n

In diesem Artikel analysieren wir konkrete Fälle von Unternehmen, die Swift nicht gewählt haben, weil es "modern" ist, sondern weil es die beste technische Lösung war. Sie sehen nicht nur trockene Fakten, sondern auch Swift-Codebeispiele, die Sie an Ihre eigenen Aufgaben anpassen können. Los geht's!

\n\n

Uber: Wie Swift Leistung und Lesbarkeit des Codes rettete

\n\n

Einer der bekanntesten Swift-Unternehmensfälle ist die Geschichte von Uber. Im Jahr 2016 traf das Team eine mutige Entscheidung: Schlüsselmodule von Objective-C auf Swift umzuschreiben. Der Grund? Eine hohe Absturzrate der App auf älteren Geräten und die schwierige Wartbarkeit von Legacy-Code.

\n\n

Was genau wurde umgeschrieben?

\n\n
    \n
  • Das Modul für Geolokalisierung und Kartenanzeige
  • \n
  • Das System zur Berechnung der Fahrpreise
  • \n
  • Die Fahreroberfläche (Hauptbildschirm)
  • \n
\n\n

Das Hauptproblem war, dass Objective-C keine ausreichende Typsicherheit bot. Dadurch traten Fehler erst zur Laufzeit auf, nicht bereits während der Kompilierung. Swift hat das behoben.

\n\n

Codebeispiel: Sichere Behandlung optionaler Werte

\n\n
// Vorher: Objective-C – nil kann übergeben werden und führt zum Absturz\n- (void)updatePrice:(NSNumber *)price {\n    if (price == nil) {\n        return; // vergessen zu behandeln – Absturz\n    }\n    self.priceLabel.text = [NSString stringWithFormat:@"$%.2f", [price floatValue]];\n}\n\n// Nachher: Swift – der Compiler lässt kein Vergessen zu\nfunc updatePrice(_ price: Double?) {\n    guard let validPrice = price else {\n        print("Preis ist nil, Platzhalter wird angezeigt")\n        return\n    }\n    priceLabel.text = String(format: "$%.2f", validPrice)\n}
\n\n

Ergebnis: Die Anzahl der Abstürze sank in den ersten drei Monaten nach der Veröffentlichung um 35 %. Swift in realen Projekten hat gezeigt, dass Typsicherheit keine abstrakte Funktion ist, sondern Geld und Nerven der Nutzer schont.

\n\n

Airbnb: Optimierung der Netzwerkarbeit und Asynchronität

\n\n

Airbnb ist ein weiterer Gigant, der Swift aktiv einsetzt. Aber ihre Geschichte handelt nicht vom Umschreiben, sondern vom Aufbau von Grund auf. Als das Team beschloss, eine neue App für Gastgeber zu entwickeln (Airbnb for Hosts), entschied es sich sofort für Swift.

\n\n

Aufgabe: Arbeit mit vielen Bildern und Buchungen

\n\n

Gastgeber laden Dutzende von Fotos hoch, und jedes muss komprimiert, verarbeitet und an den Server gesendet werden. In Objective-C wurde dies zu einer "Callback-Hölle". Swift mit seinem async/await machte den Code linear und verständlich.

\n\n

Codebeispiel: Asynchrones Hochladen von Bildern

\n\n
import UIKit\n\nstruct ImageUploader {\n    \n    func uploadImage(_ image: UIImage) async throws -> URL {\n        guard let imageData = image.jpegData(compressionQuality: 0.8) else {\n            throw UploadError.invalidImage\n        }\n        \n        let url = URL(string: "https://api.airbnb.com/upload")!\n        var request = URLRequest(url: url)\n        request.httpMethod = "POST"\n        request.httpBody = imageData\n        \n        let (data, response) = try await URLSession.shared.data(for: request)\n        \n        guard let httpResponse = response as? HTTPURLResponse,\n              httpResponse.statusCode == 200 else {\n            throw UploadError.serverError\n        }\n        \n        let json = try JSONDecoder().decode(UploadResponse.self, from: data)\n        return json.imageURL\n    }\n}\n\nenum UploadError: Error {\n    case invalidImage\n    case serverError\n}\n\nstruct UploadResponse: Codable {\n    let imageURL: URL\n}
\n\n

Dieses Beispiel —

Blogs

Buchempfehlungen