Was ist der Unterschied zwischen optional und decodeIfPresent bei Verwendung von Decodable for JSON Parsing?

technerd:

Ich verwende das CodableProtokoll von Swift 4 zum ersten Mal. Ich kann die Verwendung von decodeIfPresentvon nicht verstehen Decodable.

/// Decodes a value of the given type for the given key, if present.
///
/// This method returns `nil` if the container does not have a value associated with `key`, or if the value is null. The difference between these states can be distinguished with a `contains(_:)` call.
///
/// - parameter type: The type of value to decode.
/// - parameter key: The key that the decoded value is associated with.
/// - returns: A decoded value of the requested type, or `nil` if the `Decoder` does not have an entry associated with the given key, or if the value is a null value.
/// - throws: `DecodingError.typeMismatch` if the encountered encoded value is not convertible to the requested type.
public func decodeIfPresent(_ type: String.Type, forKey key: KeyedDecodingContainer.Key) throws -> String?

Hier wird vorgeschlagen, dass es zurückgegeben wird nil, wenn der Wert nicht mit dem zugehörigen Schlüssel vorhanden ist. Wenn dies der einzige Grund ist, wie unterscheidet es sich von der optionalen Eigenschaft, da die optionale Variable auch auf gesetzt wird, nilwenn als Antwort kein Wert vorhanden ist.

Gunter Hager:

Es gibt einen subtilen, aber wichtigen Unterschied zwischen diesen beiden Codezeilen:

// Exhibit 1
foo = try container.decode(Int?.self, forKey: .foo)
// Exhibit 2
foo = try container.decodeIfPresent(Int.self, forKey: .foo)

In Anlage 1 wird Folgendes analysiert:

{
  "foo": null,
  "bar": "something"
}

aber nicht :

{
  "bar": "something"
}

während Exponat 2 beide gerne analysiert. In normalen Anwendungsfällen für JSONParser möchten Sie also decodeIfPresentfür jede Option in Ihrem Modell.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Was ist der Unterschied zwischen der Verwendung von "sh" und "source"?

Was ist der Unterschied zwischen Spott und Spionage bei der Verwendung von Mockito?

Was ist der Unterschied zwischen dem Argument name in @Entity und @Table bei Verwendung von JPA?

Was ist der Unterschied zwischen JOIN und JOIN FETCH bei Verwendung von JPA und Hibernate?

Was ist der Unterschied zwischen mock () und stub () bei Verwendung von Mockito?

Was ist der Unterschied zwischen @Immutable und @Entity (veränderlich = false) bei Verwendung von Hibernate?

Was ist der Unterschied zwischen der Verwendung der Lambda-Funktion bei der Verwendung von FluentWait und der Nichtverwendung?

Was ist der Unterschied zwischen "super ()" und "super (Requisiten)" in React bei Verwendung von es6-Klassen?

Was ist bei Verwendung von OKHttp der Unterschied zwischen synchronen Anforderungen in AsyncTask und asynchronen OKhttp-Anforderungen?

Was ist der Unterschied zwischen der Verwendung von \ u und \ x bei der Darstellung von Zeichenliteral?

Was ist der Unterschied zwischen der Verwendung von TTimer und TThread?

Was ist der Unterschied zwischen [In, Out] und ref bei Verwendung von Pinvoke in C #?

Was ist der Unterschied zwischen * ptr und * ptr.get () bei Verwendung von auto_ptr?

Was ist der Unterschied zwischen './' und '../' bei Verwendung von os.path.isdir ()?

Was ist der Unterschied zwischen fit, transform und fit_transform in Python bei Verwendung von sklearn?

Was ist der Unterschied zwischen Android Focusable und ImportantForAccessibility bei der Verwendung von TalkBack?

Was ist der Unterschied zwischen `{{}}` und `{!! !!} `bei der Verwendung von Formularen?

Was ist der Unterschied zwischen Segue und der Verwendung von instantiateViewController?

Was ist der Unterschied zwischen 'List' und 'Rawlist' bei Verwendung von Inquirer?

Was ist der Unterschied zwischen PushPageModel und PushPageModelWithNewNavigation bei Verwendung von FreshMVVM?

Was ist der Unterschied zwischen while (wait (NULL)) {} und while (wait (NULL)> 0) {} bei Verwendung von fork

Was ist der Unterschied zwischen meinem Variablennamen und 'it' bei Verwendung von 'let' in kotlin?

Was ist bei Verwendung von GitVersion der Unterschied zwischen NuGetVersionV2 und NuGetVersion?

Was ist der Unterschied zwischen der Verwendung von optional und der Verwendung von optional, um nicht zugewiesene Variablen in Swift 3.0 zu deklarieren?

Was ist der Unterschied zwischen der Verwendung von / und \\ bei der Angabe des Ordnerspeicherorts in Python?

Was ist der Unterschied zwischen der Verwendung von "let" und "var"?

Was ist der Unterschied zwischen der Verwendung und Nichtverwendung von Invoke?

Was ist der Unterschied zwischen SerializeToZeroCopyStream und SerializeToOstream bei der Verwendung von std::cout?

Was ist der Unterschied zwischen der Verwendung von var und nicht bei der Deklaration einer Variablen?

TOP Liste

  1. 1

    MongoDB eingebettetes Dokument unterscheiden und filtern

  2. 2

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  3. 3

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  4. 4

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  5. 5

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  6. 6

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  7. 7

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  8. 8

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  9. 9

    Ersetzen von Einträgen in einer Spalte durch eine andere basierend auf der Bedingung

  10. 10

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  11. 11

    Wie ändere ich die Farbe des Symbols und des Textes, wenn ich den Bildschirm im Navigator der unteren Registerkarte in "Reaktion native" ändere?

  12. 12

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  13. 13

    Wie lade ich eine Datei herunter, ohne den Typ oder Dateinamen zu kennen?

  14. 14

    Excel VBA - Erstellen Sie mehrere Dateien aus Daten in mehreren Arbeitsmappen

  15. 15

    Docker bleibt beim Ausführen von time.sleep (1) in einer Python-Schleife hängen

  16. 16

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

  17. 17

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  18. 18

    TypeAhead.js zeigt keine Ausgangsschienen an?

  19. 19

    Pandas rufen einen Wert basierend auf dem Index ab

  20. 20

    Aktualisieren des Werts im Json-Objekt in Python

  21. 21

    Das Abrufen von einer URL zeigt einen Fehler in der Konsole an, auch nachdem er abgefangen wurde?

heißlabel

Archiv