docs: Uebergabe und README sagen nicht mehr, dass es kein Xcode gibt
Die wichtigste Aussage der Uebergabe war ueberholt: auf dieser Maschine liegt Xcode 27, Stufe 1 ist gebaut, getestet und im Simulator gestartet. Wer das nicht weiss, schreibt weiter blind und hinterlaesst dem Nutzer Fehler. Dazu neu festgehalten: der Befehl nach jeder neuen Datei (xcodegen generate), was beim Bauen auffiel (nur Swift 5, nicht Swift 6), und der naechste Stolperstein - App Transport Security laesst nur https zu, auch kein http://localhost. Ueber die Verbindung geht die Geraetemarke, ein Vollzugang; die Ausnahme ist deshalb eine Entscheidung des Nutzers, keine Nebensache. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+36
-21
@@ -1,28 +1,38 @@
|
||||
# Certain für iOS
|
||||
|
||||
Native App zum Certain-Backend. Der Code hier ist **nie übersetzt worden** — auf
|
||||
der Maschine, auf der er entstanden ist, gibt es kein Xcode. Rechne beim ersten
|
||||
Bauen mit Fehlern und schick sie mir; das ist eingeplant.
|
||||
Native App zum Certain-Backend.
|
||||
|
||||
> **Wer hier weiterarbeitet, liest zuerst [UEBERGABE.md](UEBERGABE.md).** Dort
|
||||
> steht, was entschieden ist, was fertig ist, was als Nächstes dran ist und
|
||||
> welche Eigenheiten das Backend hat. Dieses README erklärt nur, wie man den
|
||||
> Code ins Projekt bekommt.
|
||||
> welche Eigenheiten das Backend hat. Dieses README erklärt nur das Projekt.
|
||||
|
||||
## Projekt anlegen
|
||||
## Bauen und starten
|
||||
|
||||
1. Xcode → neues Projekt → **App**, Schnittstelle **SwiftUI**, Sprache **Swift**.
|
||||
2. Mindestversion auf **iOS 26** stellen.
|
||||
3. Als Geräte **iPhone und iPad** ankreuzen.
|
||||
4. Die Datei `ContentView.swift`, die Xcode anlegt, **löschen** — `App/` bringt
|
||||
einen eigenen Einstiegspunkt mit.
|
||||
5. Die Ordner aus `ios/` per Ziehen ins Projekt übernehmen, mit *Create groups*
|
||||
(nicht *folder references*).
|
||||
6. `Texte/de.lproj` und `Texte/en.lproj` übernehmen und unter
|
||||
*Project → Info → Localizations* **Deutsch** und **Englisch** eintragen.
|
||||
Deutsch ist die Grundsprache.
|
||||
Einfach `Certain.xcodeproj` öffnen — es liegt mit im Repository.
|
||||
|
||||
Der Ordner `Tests/` gehört in ein Test-Ziel, nicht in das App-Ziel.
|
||||
Die Wahrheit ist aber `project.yml`: eine XcodeGen-Spezifikation, aus der das
|
||||
Projekt entsteht. **Wer eine Swift-Datei anlegt, läuft danach einmal
|
||||
`xcodegen generate`**, sonst kennt Xcode sie nicht. Ein neuer *Ordner* will
|
||||
ausserdem eine Zeile unter `sources:`.
|
||||
|
||||
```
|
||||
brew install xcodegen # einmalig
|
||||
cd ios && xcodegen generate
|
||||
xcodebuild -project Certain.xcodeproj -scheme Certain \
|
||||
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' build
|
||||
xcodebuild -project Certain.xcodeproj -scheme Certain \
|
||||
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' test
|
||||
```
|
||||
|
||||
Festgelegt sind dort: Bündelkennung `com.scarriffle.certain`, Team
|
||||
`PP34X97WS3`, iPhone und iPad, Grundsprache Deutsch, **iOS 26** als
|
||||
Mindestversion, Sprachfassung Swift 5. Wer mit einem anderen Apple-Konto baut,
|
||||
trägt seine Team-ID in `project.yml` ein.
|
||||
|
||||
**Nur https.** App Transport Security steht auf der Voreinstellung, ein Server
|
||||
unter `http://…` wird also abgewiesen — auch `http://localhost` beim
|
||||
Entwickeln. Das ist Absicht: über die Verbindung geht die Gerätemarke, ein
|
||||
Vollzugang. Wer eine Ausnahme braucht, trägt sie bewusst in `project.yml` ein.
|
||||
|
||||
## Was wohin gehört
|
||||
|
||||
@@ -90,12 +100,17 @@ heraus, dass `created_at` ohne Zeitzone und mit Mikrosekunden kommt
|
||||
(`2026-10-20T14:18:15.780705`) — dafür hat `Zeitpunkt` einen dritten Leser,
|
||||
und `GrundlagenTests` deckt den Fall ab.
|
||||
|
||||
**Nicht geprüft:** Ob das Ganze übersetzt. Kein Xcode auf der Maschine, auf
|
||||
der es entstanden ist.
|
||||
**Ebenfalls geprüft:** Dass es übersetzt. Ein einziger Fehler in 2600 blind
|
||||
geschriebenen Zeilen (`[:]` statt `[]` in `CertainClient.schickeDatei`), danach
|
||||
keine Warnung im eigenen Code, 28 Tests grün, Start im Simulator bis zur
|
||||
Serverabfrage.
|
||||
|
||||
### Wo es beim ersten Bauen am ehesten klemmt
|
||||
**Nicht geprüft:** Der Weg gegen ein echtes Backend — anmelden, zweiter Faktor,
|
||||
Marke anlegen, Konten laden.
|
||||
|
||||
Nach abnehmender Wahrscheinlichkeit:
|
||||
### Wo es beim ersten Bauen am ehesten klemmte
|
||||
|
||||
Nichts davon trat ein; die Liste bleibt als Landkarte der heiklen Stellen.
|
||||
|
||||
1. **`@testable import Certain`** in `Tests/GrundlagenTests.swift` — muss auf
|
||||
den Namen deines App-Ziels zeigen. Heisst es anders, anpassen.
|
||||
|
||||
Reference in New Issue
Block a user