___ qstnhdr ___ Validierung jeder Eigenschaft vor dem Zurückgeben des Objekts
___ qstntxt ___
Wenn Sie Mantle verwenden, besteht die Möglichkeit, das zu erstellende Objekt (in diesem Fall über JSON) vor dem Zurückgeben zu überprüfen dass X- und Y-Eigenschaften nicht null sind?
Stellen Sie sich diese Klasse vor:
%Vor%
Ich möchte einen Weg finden, zu verifizieren, dass, wenn der JSON, den ich erhalten habe, nicht die %code% hat (aus irgendeinem Grund gab es ein Problem in der DB des Servers), werde ich eine %code% Person zurückgeben, wie sie es nicht macht Sinn, das Objekt ohne diese Eigenschaft zu erstellen.
___ answer23291563 ___
Tatsächlich benutze ich Mantle nicht, aber zur Validierung verwende ich eine andere GitHub-Bibliothek namens RPJSONValidator
Er sagt Ihnen, welcher Typ erwartet wird und welcher Typ der Wert ist.
Ein einfacher Beispielcode
%Vor%
Jedes Schlüssel / Wert-Paar beschreibt Anforderungen für jeden JSON-Wert. Zum Beispiel wird das Schlüssel / Wert-Paar %code% : %code% eine Anforderung an den JSON-Wert mit dem Schlüssel "name" als %code% setzen. Wir können auch Anforderungen verketten. Zum Beispiel wird %code% : %code% eine Anforderung auf den Wert von "age" setzen, um ein %code% zu sein, aber nur wenn es in JSON existiert.
___ answer30895224 ___
Während Sie den Initialisierer überschreiben konnten. Es scheint prägnanter, das %code% zu überschreiben, da dies in der letzten Phase aufgerufen wird, bevor %code% das deserialisierte Objekt zurückgibt. Es ist sinnvoll, all Ihre Validierungslogik in eine %code% -Methode zu legen ...
Siehe die letzte Zeile von %code%
%Vor%
Dies sagt uns, dass, wenn unser benutzerdefiniertes Modell %code% von %code% zurückgibt, Mantle das Objekt verwerfen wird.
Sie könnten also in Ihrer Unterklasse einfach folgendes ausführen:
%Vor%
Im Idealfall möchten Sie wahrscheinlich in Ihrer eigenen Implementierung einen entsprechenden Fehler zurückgeben.
Die Validierungsmethode ruft dann für jede Eigenschaft, die Sie mit Mantel in %code% registriert haben, Foundation %code% auf. Wenn Sie also ein kontrollierteres Validierungs-Setup wünschen, können Sie Ihre Daten auch hier validieren.
___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind.
___ answer23295701 ___
Sie können die %code% -Protokollmethode %code% verwenden gebe nil statt ein ungültiges Objekt zurück:
%Vor%
___ antwort23294231 ___
Ich benutze eine sehr alte Version von Mantle. YMMV
Sie können den [MTLModel modelWithExternalRepresentation] Selektor überschreiben. Rufen Sie [super modelWithExternalRepresentation] auf und fügen Sie dann Ihren eigenen Code hinzu, um nach validierten Daten zu suchen.
___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Funktionen beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die verwandten Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind.
___ answer23295688 ___
Ich folgte einem kleinen Problem , das auf Mantle geöffnet wurde:
%Vor%
Also am Ende nur überschreiben:
%Vor%
___ tag123githubmantle ___ Modell-Framework für Cocoa und Cocoa Touch von GitHub
___