Ich brauche Ratschläge, wie ich am besten vorgehen sollte.Ist es möglich, eine optionale und nicht optionale Version eines schnellen Protokolls dynamisch zu erstellen?
Ich habe viele Daten von einem Server, den ich analysieren muss in Strukturen konvertieren. Also lassen Sie uns sagen, ich bin immer seller
Informationen von einem Server, kann die Struktur wie folgt aussehen:
struct Seller {
var firstName: String?
var lastName: String?
var address: String?
}
Ich habe ein Protokoll für diese erstellt und machte meinen Verkäufer es struct nehmen. Also mein Code sieht nun wie folgt aus:
protocol SellerProtocol {
var firstName: String {get set}
var lastName: String {get set}
var address: String {get set}
}
extension Seller: SellerProtocol {
var firstName: String?
var lastName: String?
var address: String?
}
Frage: ist es eine Möglichkeit, alle Variablen in diesem Protokoll nicht optional dynamisch zu machen?
Die Sache ist, ich habe viele solche optionalen Protokolle, aber ich muss auch eine nicht-optionale Version des exakt gleichen Protokolls deklarieren, so dass andere Klassen damit übereinstimmen können. Ich möchte nur, dass die Strukturen, die direkt mit dem Server interagieren, vom optionalen Typ sind (weil die Daten vom Server Nils enthalten können), aber nachdem ich die Informationen vom Server verarbeitet habe, möchte ich eine nicht optionale Struktur erstellen.
Also muss ich zwei Versionen des exakt gleichen Protokolls pflegen? Eine optionale Version und eine nicht optionale Version?
Ich glaube, was Sie tun möchten, ist das Protokoll als nicht-optional zu deklarieren, dann verwenden Sie einen Failable-Initialisierer, um Ihre Struktur zu erstellen. Wenn Sie bestimmte Eigenschaften vermissen, schlägt die Objektinitialisierung fehl, aber wenn die Initialisierung erfolgreich ist, verfügen Sie über alle erforderlichen Daten. – AdamPro13
danke .. aber warum hast du keine Antwort geschrieben? Ich kann einen Kommentar nicht als Antwort akzeptieren. –
@ AdamPro13: Ich stimme zu, das ist der Weg zu gehen –