2017-07-23 7 views
-4

Ich versuche, eine Methode aufzurufen und zwei Argumente zu übergeben, und manchmal kann eines der Argumente null sein.Ein Objekt übergeben, das Null sein kann

storeMembershipInfo(photoData, textField.text!) 

photoData deklariert als

var photoData: Data!

und kann Daten von Bild Picker halten, aber es ist nicht zwingend um einen Wert zu haben.

Ich bekomme den Fehler gefunden nil beim Entpacken eines optionalen. Wie kann ich photoData auch dann schnell weitergeben, wenn es null ist? Ich überprüfe den Nullfall später in der aufgerufenen Methode, und wenn ich es optional mache, verlangt swift, dass ich es auspacken muss.

+1

Wie wird die storeMembershipInfo Funktion definiert? Benötigt es optionale oder nicht optionale Parameter? Wo/wie "prüfe ich später den Nullfall"? –

+1

Verwendet Ihre storeMembershipInfo-Methode optionale Parameter oder nicht optional? Kannst du den Methodendeklarationscode hier hinzufügen –

+1

Einfache Regel: Wenn * eines der Argumente nil sein kann * tue ** nicht ** verwende ein implizites unpacked optional. Bitte lesen Sie den ausführlichen Abschnitt im Language Guide über Optionals - insbesondere den Unterschied zwischen einem regulären optionalen ('?') Und einem IUO ('!') - und wie man sie benutzt. – vadian

Antwort

2

Eine Möglichkeit, das zu tun, ist Ihre Variable Erklärung ändern von:

var photoData: Data! 

An:

var photoData: Data? 

Und dann Ihre Funktion Signatur ändern, so etwas zu werden:

func storeMembershipInfo(photoData: Date?, text: String) 

Auf diese Weise akzeptiert Ihre Funktion Optionals, dh sie akzeptiert nil == > Sie müssen Ihre optionale Variable photoData nicht auspacken, wenn Sie sie als Parameter an die Funktion senden möchten.

+0

mein Problem war nicht storeMembershipInfo akzeptiert optionale Parameter, danke – fullMoon

+0

Gern geschehen! –

1

Wenn Sie eine var mit ! deklarieren Sie grundsätzlich sagen - "das wird nie Null sein". Das ist nicht der Fall mit Ihrem Code ... Wenn diese var Null halten kann, sollten Sie es als optional deklarieren (?).

In Ihrer Funktion zu überprüfen, ob nicht vorhanden ist oder nicht und entsprechend weiter und lesen Sie auch mehr über optionals hier

Verwandte Themen