0Pricing
Swift Academy · Lektion

Schichten: Domain, Daten und Präsentation

Trennen Sie Geschäftslogik, Datenzugriff und UI in einer Swift-App.

Schichten: Domain, Daten und Präsentation ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Clean Architecture in Swift

Die Clean Architecture trennt den Code in Schichten: Domain (Geschäftslogik), Data (Persistenz und Netzwerk) und Presentation (UI).

// Domain: pure Swift, no framework imports
// Data: Core Data / URLSession / JSON
// Presentation: SwiftUI / UIKit

Die Domain-Schicht

Die Domain-Schicht enthält Geschäftsobjekte, Use Cases und Repository-Protokolle. Sie hat keine Abhängigkeiten von UIKit, SwiftUI oder Datenbanken.

// Domain/Entities/User.swift
struct User {
  let id: Int
  var name: String
  var email: String
}
// No import UIKit, no import SwiftData

Use Cases in der Domain

Ein Use Case kapselt genau einen bestimmten Geschäftsvorgang. Er hängt nur von Repository-Protokollen aus der Domain ab.

// Domain/UseCases/FetchUserUseCase.swift
struct FetchUserUseCase {
  let repo: UserRepository
  func execute(id: Int) async throws -> User {
    try await repo.getUser(id: id)
  }
}

Repository-Protokolle in der Domain

Repository-Protokolle definieren den Vertrag für den Datenzugriff. Die Domain besitzt das Protokoll; die Data-Schicht stellt die Implementierung bereit.

// Domain/Repositories/UserRepository.swift
protocol UserRepository {
  func getUser(id: Int) async throws -> User
  func saveUser(_ user: User) async throws
}

Die Data-Schicht

Die Data-Schicht implementiert die Protokolle der Domain mithilfe konkreter Technologien (URLSession, Core Data, SwiftData, Keychain).

// Data/Repositories/RemoteUserRepository.swift
struct RemoteUserRepository: UserRepository {
  func getUser(id: Int) async throws -> User {
    let data = try await URLSession.shared.data(from: userURL(id)).0
    return try JSONDecoder().decode(User.self, from: data)
  }
  func saveUser(_ user: User) async throws { /* PUT request */ }
}

Data Transfer Objects

DTOs sind Codable-Typen, die in der Data-Schicht zum Dekodieren von API-Antworten verwendet und anschließend auf Geschäftsobjekte abgebildet werden.

struct UserDTO: Decodable {
  var user_id: Int
  var full_name: String
  func toDomain() -> User { User(id: user_id, name: full_name, email: "") }
}

Die Presentation-Schicht

Die Presentation-Schicht enthält ViewModels und SwiftUI-Views. Sie ruft Use Cases auf und stellt beobachtbaren Zustand bereit.

// Presentation/ViewModels/ProfileViewModel.swift
@MainActor
final class ProfileViewModel: ObservableObject {
  @Published var user: User?
  private let useCase: FetchUserUseCase
  init(useCase: FetchUserUseCase) { self.useCase = useCase }
  func load(id: Int) async {
    user = try? await useCase.execute(id: id)
  }
}

Abhängigkeitsrichtung

Abhängigkeiten zeigen nach innen: Presentation hängt von der Domain ab; Data hängt von der Domain ab. Die Domain hat keine Abhängigkeiten.

// Outer → Inner dependency rule:
Presentation → Domain ← Data
// Domain is the stable core; outer layers are swappable

Ordnerstruktur

Organisieren Sie Swift-Dateien in großen Apps zunächst nach Schicht und anschließend nach Feature.

// MyApp/
// ├── Domain/
// │   ├── Entities/
// │   ├── UseCases/
// │   └── Repositories/  (protocols)
// ├── Data/
// │   └── Repositories/  (implementations)
// └── Presentation/
//     ├── Views/
//     └── ViewModels/

Vorteile

Eine geschichtete Architektur ermöglicht unabhängige Tests, austauschbare Implementierungen und die parallele Entwicklung durch mehrere Teams.

// Test Domain in isolation: no network, no DB
// Swap RemoteUserRepo with LocalUserRepo for offline mode
// Teams own layers independently

Häufige Fehler

Vermeiden Sie Importe von UIKit/SwiftUI in der Domain-Schicht und vermeiden Sie, dass Geschäftslogik in Views gelangt.

// WRONG: Domain entity with SwiftUI Color
struct Product {
  var color: Color  // UIKit/SwiftUI import in Domain!
}
// CORRECT: Use a plain string or enum
struct Product { var colorHex: String }

Kurze Überprüfung

Welche Schicht besitzt in der Clean Architecture die Repository-Protokolle?

Zusammenfassung der Lektion

Schichten der Clean Architecture: Domain (Geschäftsobjekte, Use Cases, Protokollverträge), Data (Implementierungen für Netzwerk und Datenbanken), Presentation (UI und ViewModels). Abhängigkeiten zeigen nach innen zur Domain. Die Domain hat keinerlei Framework-Abhängigkeiten und kann daher vollständig mit Unit-Tests getestet werden.

Häufig gestellte Fragen

Ist die Lektion „Schichten: Domain, Daten und Präsentation“ kostenlos?

Ja — der vollständige Text von „Schichten: Domain, Daten und Präsentation“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Schichten: Domain, Daten und Präsentation“?

Trennen Sie Geschäftslogik, Datenzugriff und UI in einer Swift-App. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Schichten: Domain, Daten und Präsentation“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Schichten: Domain, Daten und Präsentation
  2. Use-Case- und Repository-Pattern
  3. Dependency Inversion mit Protokollabstraktionen
  4. Schichten ohne DI-Framework verbinden
← Zurück zu Swift Academy