Fragen zu Xcode - Aufbau

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Fragen zu Xcode - Aufbau

    Hallo an die Community,

    kurze Vorweg-Info: ich habe aus dem Studium Erfahrungen mit Java und Python und taste mich jetzt an Swift ran und Xcode. Der Grund: ich habe eine - relativ simple - App, die ich gerne für mich und Freunde selbst auf dem iPhone entwickeln würde. Ich habe mir dazu auch Literatur bestellt und probiere schon fleißig aus, trotzdem sind mir einige Dinge nicht klar. Deswegen hier meine Fragen mit der Bitte um Hilfe! Dafür schon mal vorne weg vielen Dank!

    Zur App:
    Die grundsätzliche Idee ist: die App soll eigentlich nur aus einer Seite bestehen (mehr wird gar nicht benötigt). Im oberen Bereich soll ein Feld sein, wo ein Ergebnis ausgegeben werden kann (dieses besteht aus einer sortierten Menge von 8-10 Zahlen) und im unteren Bereich soll der User aus einer Auswahl von 1-30 Zahlen auswählen können. Da mir Optik auch wichtig ist, stelle ich mir unten ein 10x3-Raster vor (z. B. Quadrate, wo die zahlen von 1-30 drinstehen). Der User soll also nach Start der App auf eine Zahl klicken, die App rechnet dann was aus gemäß meiner Programmierung und gibt dann 8-10 Zahlen als Ergebnis raus.

    Meine Fragen:
    - ich blicke - trotz Literatur - nicht ganz durch, wo ich meinen Programmcode reinschreiben muss? Der Hauptteil der App ist die Berechnung im Hintergrund. Der User soll eine Zahl anklicken, diese soll dem Programm übergeben werden, dieses berechnet dann neue Werte und gibt diese aus. Kann ich die in eine eigene Datei schreiben (z. B. Berechnung.swift) und dann einfach im Hauptteil importieren und darauf verweisen oder muss der gesamte Code in dem Bereich mit var body usw. stehen? Wenn ja, wie geht das?

    - ich verstehe den Aufbau links in Xcode nicht ganz: ich hab einmal eine Swiftdatei mit der App, dann einmal contentview und einmal assets? Meine Literatur, die ich fleißig durchgehe, erklärt da nicht so viel.

    Ich mache das ganze als Hobby neben meinem Job, also bitte um Nachsicht, dass ich kein "Programmierer" bin, aber ich bin auch nicht ganz neu ;)

    Danke!

    Liebe Grüße!
  • die_ente schrieb:

    Meine Literatur, die ich fleißig durchgehe, erklärt da nicht so viel.
    Dann hast Du die falsche Literatur ;)

    Ich würde ehrlich gesagt mit einem Buch starten, welches die Grundlagen von Xcode, iOS-Programmierung und Swift vernünftig und didaktisch behandelt. Dann lernt man die Hintergründe und kann anhand von Beispielen das Verständnis überprüfen - aber es gibt andere "Lerntypen". Ich werfe mal "Swift 5" (Michael Kofler) in den Raum, aber da gibt es vieles.
    • Code kann an diversen Stellen stehen, und ein Auslagern in eigene Klassen kann je nach Komplexität sinnvoll sein. Nach Deiner Beschreibung würde ich ihn allerdings ganz "schlank" im ViewController hinterlegen - von einer "klassischen App" mit UIKit ausgehend. Dieser steuert (wie sein Name sagt) eine View, die Du z. B. im Interface Builder konstruieren kannst. Assets sind z. B. Grafiken, Icons, Farben.
    • Alle verschiedenen Elemente eines Xcode-Projektes findest Du links im ersten Tab des Navigators. Auch hier hilft Dir ein einführendes Buch, aber für Ungeduldige findest Du auch z. B. direkt bei Apple Beschreibungen.
    Um die Dinge weiter zu verkomplizieren, wird vielleicht jemand SwiftUI in den Raum werfen (Du hast oben schon Stichworte erwähnt). Ich bin allerdings der Meinung, dass die deklarative Syntax für jemanden mit Erfahrung in "klassischer Programmierung" eine zusätzliche Hürde darstellt - YMMV

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Das kannst handhaben wie n Dachdecker...
    ... zu X-Code, ist MyMattes mit Sicherheit versierter als ich...

    Ich vermute, du willst dein UI mit SwiftUI gestalten...
    ... da geht natürlich beides...
    ... würde aber immer die Logik von der Darstellung trennen...
    die UI als Struct... die Logik als Class oder als Actor
    Wenn Du Lust hast, kannst die Logik dann zentral im Environment zur Verfügung stellen, wo jede View auf dieselben Daten drauf zugreift. Dann hast das Problem der redundanten Datenhaltung nicht mehr. Musst dann nur noch deine View über die Änderungen informieren, das geht am besten mit dem neuen @Observable Macro. Die alte Methode über ObservableObject führt über ein paar Views schnell zur Frustration, dann musst bspw mit Notifications etc, welche weit weniger performant sind, dagegen ankämpfen.
  • Ich vermute auch mal, dass du dein Projekt mit SwiftUI angelegt hast.

    Ich persönlich vergleiche SwiftUI ein wenig mit HTML und JavaScript und php. Da muss man gleichermaßen seine Elemente verschachtelt einbauen und kann diese mit "Attributen" versehen und dann über php (hier dann Swift) Berechnungen erledigen lassen. (gaaanz grob ausgedrückt) Darum war für mich SwiftUI einfacher zu verstehen und zu lernen.

    Zu deinen Fragen:

    Mit der ContentView fängst du an. Die ContentView macht das, was ihr Name schon sagt: den Inhalt sichtbar machen. Hier also mit SwiftUI also dein GUI erstellen.

    Wenn du nur ein paar kleine Berechnungen hast, die du nur an dieser einen Stelle brauchst, dann kannst du in der ContentView direkt eine func erstellen. Das reicht dort.
    Wenn du Funktionen hast, du die in verschiedenen Views brauchst, dann empfehle ich, eine Extension zur View zu erstellen.
    Komplexere Sachen kannst du auch recht einfach über Class machen. Dann diese entweder in der View vor dem body instantiieren oder einfach mit dem Class-Namen aufrufen und mit Punkt gefolgt die Methode anhängen.

    Beispiel:

    Quellcode

    1. // Das ist die Classendatei
    2. import Foundation
    3. class MachWas {
    4. func ichMachDas() -> String {
    5. return "Hello world!"
    6. }
    7. }

    Quellcode

    1. // hier deine View
    2. struct ContentView: View {
    3. ....
    4. var body: some View {
    5. Text(MachWas().ichMacDas())
    6. }
    7. }

    Deine Klassen-Dateien kannst du ablegen, woimmer du willst und solltest sie so benennen, wie die Klasse heißt.
    Importen brauchst du sie nicht. Xcode findet die und kümmert sich schon um alles andere.

    Mein Literaturtipp:

    Sillmann, Thomas: "Das SWIFT Handbuch" aus dem Hanser-Verlag. Aktuellste Auflage. (Frag mal beim örtlichen Buchhändler nach)
    Dicker Schinken für 50,-, gut erklärt und leistet auch später als Kompendium gute Dienste.