Ich kann keinem Member einer Struktur Werte zuweisen. Ich erhalte den folgenden Fehler:
Fehler: Kann 'name' nicht zu 'petItem' zuweisen.
Gibt es eine Abhilfe oder muss ich ALLE Werte während der Instanzerstellung zuweisen?
Der Grund für diesen Fehler ist, dass petItem
unveränderlich ist (Sie können es nicht ändern) innerhalb von addItem
. Wenn Sie die übergebene Instanz ändern möchten, müssen Sie die Funktion folgendermaßen deklarieren:
Leider haben Sie jetzt einen weiteren Fehler, da die Variable petItem
, die Sie ursprünglich mit let
erstellt haben, unveränderlich ist. Also ändere das in var
und schon gehts los:
Nun können Sie Ihren Code ausführen, und Sie werden feststellen, dass die name
, die Sie in addItem()
festgelegt haben, nicht in Ihrer petItem
-Variable ausgegeben wird. Was ist passiert? In Swift struct
Instanzen werden nach Wert an Funktionen übergeben, so dass nichts, was mit einem Parameter in der Funktion passiert, die ursprüngliche Variable beeinflusst, außer der Parameter wird als inout
deklariert. Also machen wir das:
und Sie müssen Ihren Aufruf ändern, um zu zeigen, dass Sie wissen, dass dieser Parameter geändert werden kann:
%Vor%