01
Der Diagnosebericht entscheidet über den nächsten Schritt
Eine Preview ist nicht einfach eine verkleinerte Ansicht des zuletzt erfolgreichen App-Builds. Xcode muss die betreffende View, ihre Preview-Daten, deren Abhängigkeiten und die passende Ausführungsumgebung separat laden. Apple beschreibt die Arbeitsweise von Previews und die Canvas-Steuerung in der offiziellen Dokumentation zu SwiftUI Previews in Xcode. Ein erfolgreicher Build oder ein laufender Simulator beweist daher nicht, dass dieselbe View in der Preview-Umgebung funktioniert.
Beginnen Sie mit einer unveränderten Fehleraufnahme:
- Notieren Sie Target, aktives Scheme, ausgewählte Plattform und Simulator beziehungsweise Gerät.
- Schreiben Sie die genaue Fehlermeldung, den Zeitpunkt und die zuletzt geänderte Datei auf.
- Speichern Sie die betroffene View als minimales, anonymisiertes Reproduktionsbeispiel.
- Öffnen Sie im Canvas den Diagnosebereich und exportieren Sie den Previews-Diagnosebericht.
- Ordnen Sie den ersten aussagekräftigen Fehler einer Kategorie zu: Kompilierung, Initialisierung, Laufzeit, Linker, Ressource, Berechtigung oder Simulator.
Verwenden Sie in einem Bericht keine echten Kundendaten, privaten API-Schlüssel, Benutzernamen oder internen Pfade. Für eine spätere Meldung an Apple beschreibt die offizielle Übersicht zu Swift-Logs und Feedback-Profilen, welche Protokolle und Diagnoseinformationen sinnvoll sind.
Cannot preview in this file: erst Makro und Datei prüfen
Die Meldung „Cannot preview in this file“ bedeutet nicht automatisch, dass der Mac oder Xcode beschädigt ist. Prüfen Sie zunächst, ob die Datei tatsächlich eine gültige Preview-Deklaration enthält und ob sie dem erwarteten SwiftUI-Target zugeordnet ist. Verwenden Sie das in der jeweiligen Xcode-Version unterstützte Preview-Makro und kontrollieren Sie, ob die Datei versehentlich nur in einem Test-, Bibliotheks- oder nicht ausgewählten Target liegt.
Danach entfernen Sie aus der Preview-Erstellung alles, was nicht für die Darstellung der View notwendig ist. Ein problematischer Initialisierer kann bereits beim Aufbau der Vorschau Netzwerkzugriffe, Datenbankverbindungen, Dateizugriffe oder eine Produktionskonfiguration auslösen. Die Hauptanwendung kann dabei weiterhin starten, weil sie eine andere Startreihenfolge und einen anderen Zustand verwendet.
Reduzieren Sie die View deshalb auf eine statische Darstellung:
#Preview {
ProductCard(
title: "Beispieldatensatz",
imageName: "sample-image"
)
}
Die Namen dienen hier nur als Platzhalter. Ersetzen Sie keine echten Modul-, Projekt- oder Kundennamen in veröffentlichten Diagnosebeispielen. Wenn diese vereinfachte View funktioniert, fügen Sie Environment-Werte, Observable-Zustände und Testdaten einzeln wieder hinzu. Der erste Wiederholungsfehler ist wertvoller als ein pauschales „Preview funktioniert nicht“.