Autor-Archiv Tobias Stephan

VonTobias Stephan

Swift UI arbeiten mit @State

Alle Apps ändern ihren Status. Zum Beispiel könnte der Benutzer auf eine Schaltfläche getippt haben, um weitere Informationen anzuzeigen, er könnte einen Text in ein Textfeld eingegeben oder ein Datum aus einer Datumsauswahl gewählt haben – alles Dinge, bei denen die App von einem Zustand in einen anderen wechselt.

Das Problem mit dem Zustand ist, dass er unübersichtlich ist: Wenn er sich ändert, müssen wir diese Änderung erkennen und unsere Layouts entsprechend aktualisieren. Das klingt zunächst vielleicht einfach, aber wenn unser Zustand wächst und wächst, wird es immer schwieriger – man vergisst leicht, eine Sache zu aktualisieren oder die Reihenfolge der Aktualisierung zu verwechseln, so dass der Zustand der Benutzeroberfläche nicht mit dem übereinstimmt, was erwartet wurde.

SwiftUI löst dieses Problem, indem es den Zustand aus unserer Kontrolle entfernt. Wenn wir Eigenschaften zu unseren Ansichten hinzufügen, sind sie effektiv inaktiv – sie haben zwar Werte, aber ihre Änderung bewirkt nichts. Wenn wir jedoch das spezielle @State-Attribut vor ihnen hinzugefügt haben, wird SwiftUI automatisch auf Änderungen achten und alle Teile unserer Ansichten, die diesen Zustand verwenden, aktualisieren.

Wenn es darum geht, sich auf einen Zustand zu beziehen – zum Beispiel, eine Zustands-Eigenschaft anzuweisen, sich zu ändern, wenn sich ein Kippschalter ändert – können wir nicht direkt auf die Eigenschaft verweisen. Das liegt daran, dass Swift denken würde, dass wir uns gerade auf den Wert beziehen, anstatt zu sagen: „Bitte passen Sie auf das Ding auf“. Glücklicherweise besteht die Lösung von SwiftUI darin, ein Dollarzeichen vor den Namen des Grundstücks zu setzen, wodurch wir uns auf die Daten selbst und nicht auf ihren aktuellen Wert beziehen können. Ich weiß, dass dies am Anfang etwas verwirrend ist, aber nach ein oder zwei Stunden wird es zur zweiten Natur.

Denken Sie daran, dass SwiftUI deklarativ ist, d.h. wir teilen ihm alle Layouts für alle möglichen Zustände im Voraus mit und lassen es herausfinden, wie es sich zwischen ihnen bewegen kann, wenn sich die Eigenschaften ändern. Wir nennen dies Bindung – wir bitten SwiftUI, Änderungen zwischen einem UI-Steuerelement und einer zugrunde liegenden Eigenschaft zu synchronisieren.

Die Arbeit mit State wird Ihnen anfangs einige Kopfschmerzen bereiten, wenn Sie an einen imperativeren Programmierstil gewöhnt sind, aber vertrauen Sie mir – wenn Sie damit fertig sind, ist die Sache klar. Übersetzt mit www.DeepL.com/Translator (kostenlose Version)

VonTobias Stephan

XCode Git Wiederherstellung Repository

Egal ob Sie als Solo-Entwickler oder im Team arbeiten, wenn Sie für Ihre Projekte keine Quellcodekontrolle verwenden, sollten Sie es tun. Die Versionsverwaltung ist erstaunlich, weil sie Ihnen hilft, leichter zu älteren Versionen Ihres Codes zurückzukehren, neue Funktionen ohne Risiko zu Ihrer funktionierenden Anwendung hinzuzufügen, zu sehen, wie sich Ihr Code im Laufe der Zeit verändert hat, und als Team zu arbeiten. Und eines der besten Quellcode-Kontrollsysteme ist direkt in Xcode integriert – Git!

Git ist ein verteiltes Versionskontrollsystem, das ursprünglich von Linus Torvalds entwickelt wurde, dem Hauptverantwortlichen für die Entwicklung des Linux-Kernels. Das Schöne an Git ist, dass es kein zentrales Repository geben muss – jeder kann seine eigene Sicht auf den Code haben und Änderungen aus anderen Quellen einziehen.

In diesem Tutorial werden Sie praktische Erfahrungen mit Git sammeln und lernen, wie Sie es direkt in Xcode verwenden können.

Erste Schritte
Anstatt über die Theorie des Git zu schwafeln, tauchen Sie gleich ein und probieren es aus. Sie werden ein neues Xcode-Projekt erstellen und einige Aufgaben ausprobieren, die Sie normalerweise täglich mit der Git-Quellcode-Kontrolle durchführen werden.

Starten Sie Xcode und erstellen Sie ein neues Single View Application-Projekt. Wählen Sie einen Speicherort und stellen Sie sicher, dass die Option Git-Repository auf meinem Mac erstellen ausgewählt ist, bevor Sie fortfahren. Sobald Sie dies getan haben, klicken Sie auf Erstellen.


Xcode wird Ihr neues Projekt zusammen mit einem neuen Git-Repository erstellen.

Alle Versionskontrollsysteme, einschließlich Git, speichern ihre Daten in einem Repository, damit sie Ihre Projektversionen verwalten und Änderungen während des gesamten Entwicklungszyklus verfolgen können. Stellen Sie sich ein Repository als eine Datenbank für Versionen vor.

Versions-Datenbank

Im Laufe der Arbeit an Ihrem Projekt werden Sie Dateien hinzufügen, Code modifizieren und Ihr Projekt viele Male ändern.

Nachdem Sie eine große Anzahl von Änderungen vorgenommen haben und sich Ihr Projekt in einem „bekannt guten“ Zustand befindet (normalerweise ein oder mehrere Male pro Tag), ist es eine gute Idee, Ihre Änderungen in das Repository einzuchecken. Dadurch erhalten Sie eine Aufzeichnung der „bekannt guten“ Zustände, zu denen Sie jederzeit zurückkehren können.

Aber was ist mit dem Code, der von der Projektvorlage erstellt wurde?

Ihr Projekt enthält nach wie vor nur die Vorlagendateien. Sie müssen noch nichts übergeben, weil Xcode dies für Sie getan hat, als Sie Ihr Projekt erstellt haben.

Um dies zu überprüfen, öffnen Sie den Navigator der Versionsverwaltung (Befehlstaste-2 ist die Tastenkombination). Stellen Sie nun sicher, dass der Versionsverwaltungsinspektor (Befehl-Option-3) ebenfalls geöffnet ist. Klicken Sie mit der Option auf das Offenlegungsdreieck neben GitUseExample im linken Fensterbereich, um alle in Ihrem Repository konfigurierten Zweige, Tags und Fernbedienungen anzuzeigen. Klicken Sie auf den Master-Zweig und dann auf die Erstübergabe im Editor-Fenster und Sie sehen die Details der automatischen Übertragung von Xcode.

XCode Git Repository wiederherstellen

Nehmen Sie jetzt einige Änderungen an Ihrem Projekt vor. Geänderte Dateien werden mit einem „M“ gekennzeichnet. Klicken sie mit der rechten Maustaste auf die Datei und wählen Commit. Nun befindet sich die Änderung im Repository und kann in dem Zustand jederzeit wiederhergestellt werden.

VonTobias Stephan

Pour des raisons que je ne peux pas expliquer, la toile (de Canvas) n’était tout simplement plus affichée dans un fichier SwiftUI. La recherche sur Google n’a pas aidé non plus. J’utilise Catalina 10.15. Après tout, ça marchait avant. Dans le même projet avec d’autres fichiers SwiftUI, l’aperçu a également été affiché. Je recommande donc une solution de contournement rapide. Copier + Coller est la solution ici. Il suffit de créer un nouveau fichier et de supprimer l’ancien. Insérez à nouveau le code source et pouf… la prévisualisation est de retour. Bien sûr, vous devez vérifier si la toile est montrée.

Avec le menu Éditeur + Toile, la toile peut être affichée ou masquée. Une autre possibilité est la
Combinaison de touches : ALT – Commandement – RETURN

Ici dans l’image, vous pouvez cliquer sur le symbole en haut à droite, 2ème en partant de la droite.

VonTobias Stephan

swift canvas window not showing

For reasons I can’t explain, the canvas (from Canvas) was simply no longer displayed in a SwiftUI file. Googling did not help either. I use Catalina 10.15. After all it worked before. In the same project with other SwiftUI files the preview was also displayed. So I recommend a quick workaround. Copy + Paste is the solution here. Just create a new file and delete the old one. Insert the source code again and poof…the preview is back. Of course you should check if the canvas is shown at all.

With the menu Editor + Canvas the canvas can be shown or hidden. Another possibility is the
Key combination: ALT – Command – RETURN

Here in the picture you can click on the symbol on the top right, 2. from the right.

VonTobias Stephan

Xcode Swift UI Canvas Leinwand wird nicht angezeigt

Aus mir nicht erfindlichen Gründen wurde bei einem SwiftUI File einfach die Leinwand (von Canvas) nicht mehr angezeigt. Googeln half auch nicht. Catalina 10.15 setze ich ein. Schließlich hat es ja auch vorher funktioniert. Im gleichen Projekt mit anderen SwiftUI Files wurde die Preview auch angezeigt. Also empfehle ich einen flotten Workaround. Copy + Paste ist hier die Lösung. Einfach ein neues File anlegen und das alte Löschen. Quellcode wieder einfügen und schwups…die Preview ist wieder da. Natürlich sollte man vorher prüfen, ob die Leinwand überhaupt eingeblendet wird.

Über das Menü Editor + Canvas kann die Leinwand ein- bzw. ausgeblendet werden. Eine weitere Möglichkeit ist die
Tastenkombination: ALT – Command – RETURN

Hier im Bild kann man auf das Symbol rechts oben, 2. von rechts bemühen.

VonTobias Stephan

DataSet Tabelle entfernen c#

Eine DataTable mit dem Namen ‚export‘ gehört bereits zu diesem DataSet.

Die Fehlermeldung kennen wir alle. Wenn man diesen Fehler vermeiden möchte, kann man das ganz einfach umsetzen. Mit den folgenden Zeilen fragt man, ob die Tabelle im DataSet existiert

  if (dtDataSet.Tables.IndexOf("export") > -1)
     RemoveTableFromDataSet(dtDataSet, "export");

Hier findest Du Methode um die Tabelle aus dem bereits existierenden DataSet zu entfernen.

public static void RemoveTableFromDataSet(DataSet oDataSet, string TableName)
{
  DataTableCollection tablesCol = oDataSet.Tables;
  if (tablesCol.Contains(TableName) tablesCol.CanRemove(tablesCol[TableName]))
                tablesCol.Remove(TableName);
}

VonTobias Stephan

Swift print variable in string

So gibt man einfach den Wert einer Variable in Swift innerhalb eines strings aus.

let str = "Einfach mal den Wert einer Variable ausgeben..."
print("\(str!)")
VonTobias Stephan

Mac Backslash Hotkey Tastenkombination

Hey, ganz einfach und wirklich gut zu merken.

SHIFT + ALT + 7

VonTobias Stephan

shopware inbrengen in winkelwagen werkt niet

Vandaag belt een klant en klaagt dat hij een artikel niet in het winkelwagentje kan stoppen… omdat er voortdurend andere bestellingen binnenkomen, denk je dat het niet de winkel kan zijn. Nou ja, misschien maakt de klant een „domme“ fout…verre van dat…de klant had gelijk! De oplossing was heel eenvoudig! De winkel was toegankelijk via http: zowel als via de gecodeerde SSL-pagina. Een automatische doorverwijzing naar https://www.leckerstecker.de bracht de oplossing. Soms kan het ook eenvoudig zijn.

De gebruikelijke oproep zal zeker via een zoekmachinelink verlopen…maar hier heeft de klant daadwerkelijk de directe weg gekozen. Ik wil er niet aan denken hoeveel bedrijven we gemist hebben door deze kleine fout.

VonTobias Stephan

L’insertion d’un article dans le panier ne fonctionne pas

Aujourd’hui, un client appelle et se plaint qu’il ne peut pas mettre un article dans le panier… parce que les autres commandes affluent constamment, vous pensez que ce n’est pas le magasin. Eh bien peut-être que le client fait une erreur „stupide“… loin de là… le client avait raison ! La solution était très simple ! La boutique était accessible via http : ainsi que via la page cryptée SSL. Une redirection automatique vers https://www.leckerstecker.de a apporté la solution. Parfois, cela peut aussi être simple.

L’appel habituel se fera certainement via un lien vers un moteur de recherche… mais ici, le client a en fait choisi la voie directe. Je ne veux pas penser au nombre d’entreprises que nous avons ratées à cause de cette petite erreur.