Guter Einstieg in die Programmierung mit Swift/Xcode

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

  • Guter Einstieg in die Programmierung mit Swift/Xcode

    Hallo zusammen,
    ich möchte gerne anfangen mit der Swift bzw. Xcode Programmierung. Ich habe mich schon auf YouTube umgeschaut wegen Tutorials doch bin leider nicht wirklich fündig geworden da die meisten entweder auf Englisch sind (bin da nicht so der Profi) oder ziemlich veraltet. Hätte jemand einen Tipp wo man relativ schnell (ist so gemeint das man am Anfang nicht allzu sehr in die Tiefe geht) und auch recht einfach Xcode erklärt bekommt?

    Mein Ziel ist es am Ende für eine Schulveranstalltung eine iPad App zu Programmieren die zur Bewertung eines Wettbewerbes dienen soll. Ich habe da schon mal etwas angefangen (habe in der Main.storyboard mal ein Designentwurf erstellt) allerdings merke ich das ich schnell auf Probleme stoße. Und da ich von halben Sachen nichts halte, wollte ich es einmal vernünftig lernen (Zeit habe ich noch recht lange, denn wer weiß schon wann Veranstaltungen mit mehr als 80 Leuten überhaupt wieder möglich sind.)

    Mfg

    Janek
  • Ich lese mich die letzten Tage entspannt ein und muss sagen, dass sich meine Vorurteile gegenüber Swift (mangelnde Lesbarkeit) zunehmend bestätigen - oder liegt es an mir?

    Natürlich muss man nicht alle Möglichkeiten einer Sprache nutzen und ich opfere auch unter Objektive-C häufiger Kompaktheit oder gar Performanz zugunsten der Lesbarkeit. Aber wer kann mir erklären, warum z. B. die nachfolgenden Punkte für einen Neueinsteiger leichter zugänglich sind oder zu besserem Code ermutigen:
    • array.sort sortiert das aufrufende Array
    • array.sorted erzeugt ein neues Array
    • array.reversed ändert aber wiederum das aufrufende Array
    Oder die Parameter-Übergabe an Funktionen:
    • by value wird kopiert (z. B. Structs), by reference (z. B. Objekte) nicht; aber welcher Datentyp vorliegt, ist nicht offensichtlich: Date oder Calendar sind z. B. Structs, DateFormatter Objekte
    • Veränderbare Parameter müssen mit & übergeben werden, in der Funktion werden diese aber nur mit dem Namen angesprochen. Da finde ich die durchgehende Verwendung von Adressen als Pointer zu Objekten wesentlich konsequenter
    Das sind nur die Beispiele, die mir bis jetzt aufgefallen (und gerade präsent) sind. Ich möchte hier ehrlich kein Swift-Bashing betreiben - dann steigt mir wohl auch der Mod auf‘s Dach :) , aber hattet Ihr auch solche Einstiegshürden? Natürlich hilft einfach machen und üben, aber konsistent oder gar einfach erscheint mir die Sprache bisher nicht…

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Moin Mattes,

    du bist ein Bruder im Geiste, mir geht es mit der Krankheit Objective C, genauso, ist ja weder C noch C++ ... :(
    Ich kann das einfach nicht lesen und daher, muss ich auch sagen dass die Doc von Apple saumässsig ist, da sie die Beispiele immer in Objective-C machen. Da kommt doch niemand draus...

    Das mit den Objekten, wie in DateFormatter, kommt einfach aus Objective C. Ist halt der Vergangenheit geschuldet, wo du dich ja bestens auskennst. Dass Objekte Referenz-Typen sind und Structs und eNums Werte-Typen, muss man sich halt dran gewöhnen. Wenn man das nicht möchte, kann man auch mit Präfixen arbeiten, wie damals Microsoft, mit C... da bekammen die structs ein s, die Klassen ein c und die enums ein e vorne dran gestellt. Da sich die Herkunft von Swift nicht verleugnen lässt, kann man auch die Klassenpräfixe Gross und die Instanzen-Präfixe klein schreiben. Aber das kennst wohl auch bestens aus Objective-C.

    Dass hier manche Funktionen resp. Methoden speziell arbeiten, hat aber nichts mit der Sprache zu tun, sondern mit der Library. Weshalb erstellst dir nicht einen MyMattes Library, welche die Array's, Mengen oder was auch immer so behandelt, wie du es dir wünscht? Ist doch in jeder anderen Sprache auch das gleiche. Je nachdem welchen Kopf man gerade vor die Tastatur setze, sieht das API ein wenig anders aus..

    Aktuell liegt Objective-C in Sachen der Performance noch vor Swift. Wenn Du entsprechende Code-Stellen hast, kannst sie auch direkt in Objective-C implementieren und in Swift einbinden. Ist leider so offen...
    und darunter hat man halt an anderen Stellen zu leiden, wie du ja oben schon selbst festgestellt hast. Es ändert sich, aber sehr langsam, wird wohl noch mind. 10 Jahre dauern, bis sie das Objective-C aus Swift herausschütteln. Bis daher muss man leider mit den Kompromissen leben...

    Nix für ungut...

    Neue Klassen werden in Swift aktuell bevorzugt mit Struct's statt mit Klassen implementiert. Frag mich nicht warum...

    SchöneGrüsse
    Wolf
    .
  • MyMattes schrieb:

    array.sort sortiert das aufrufende Array

    array.sorted erzeugt ein neues Array

    array.reversed ändert aber wiederum das aufrufende Array
    func sort()
    Sorts the collection in place.
    func sorted() -> [Element]
    Returns the elements of the sequence, sorted.

    func reverse()
    Reverses the elements of the collection in place.
    func reversed() -> ReversedCollection<Array<Element>>
    Returns a view presenting the elements of the collection in reverse order.

    Swift Array
  • MyMattes schrieb:

    Oder die Parameter-Übergabe an Funktionen:
    • by value wird kopiert (z. B. Structs), by reference (z. B. Objekte) nicht; aber welcher Datentyp vorliegt, ist nicht offensichtlich: Date oder Calendar sind z. B. Structs, DateFormatter Objekte
    • Veränderbare Parameter müssen mit & übergeben werden, in der Funktion werden diese aber nur mit dem Namen angesprochen. Da finde ich die durchgehende Verwendung von Adressen als Pointer zu Objekten wesentlich konsequenter

    Das ist doch selbst bei C nicht großartig anders — der wesentliche Unterschied ist, dass structs in Objective-C drastische Einschränkungen haben, während man in Swift ganz einfach Methoden deklarieren kann.
    Das "&" wird unter der Haube wahrscheinlich schon mit einen ganz simplen Pointer umgesetzt, aber vorstellen kann man sich das am besten als Marker für "Achtung, wird verändert" (ohne überhaupt zu wissen, was ein Pointer ist).

    Ich empfehle einfach mal einen Perspektivenwechsel:
    Warum kann ich kein NSArray mit int-Werten haben? `[nil isEqual:nil]` = ?...

    Wenn man ohne Vorwissen auf die Sprache guckt, ist Objective-C auch ziemlich merkwürdig...