2017-05-09 6 views
0

Ich habe eine Struktur namens FoodItem und es hat 3 EigenschaftenAdd-Protokoll nach der Bedingung struct erfüllt Swift 3

struct FoodItem { 

    foodName: String 
    foodAmount: Double 
    amountMetric: String  

} 

Wenn der Benutzer ein Lebensmittel an die er App hinzufügen/sie es in 2 Schritten tut. Schritt eins erfordert nur diese 3 Dinge. Allerdings Schritt 2 erfordert ein paar zusätzliche Dinge ... wie amountOfSteps: Int, stepTitle: String ...

protocol CookingInstructions { 

    var amountOfSteps: Int { get } 
    var stepTitle: String { get } 

} 

Ist es möglich, den Schritt 2 Teil als ein Protokoll hinzuzufügen, aber das Protokoll hinzufügen, nachdem Schritt 1 beendet ? also vor Schritt 2 hat die Struktur keine Kenntnis des Protokolls, aber dann fügt es hinzu?

Am Ende möchte ich nur Schritt 1, nur 3 Dinge zu verlangen, und dann Schritt 2, um ein paar andere zu erfordern.

+1

Warum nicht 'amountOfSteps' Hinzufügen und' 'stepTitle' zu ​​FoodItem' struct und sie optionals machen? –

Antwort

1

Nein, es ist nicht möglich, die Konformität einer Struktur zur Laufzeit zu ändern.

Vielleicht könnten Sie eine weitere Struktur für Schritt 2 hinzufügen und dann eine Struktur, die Ihre FoodItem und Ihre CookingInstructions enthält?

So:

struct FoodItem { 
    foodName: String 
    foodAmount: Double 
    amountMetric: String  
} 

struct CookingInstructions { 
    var amountOfSteps: Int 
    var stepTitle: String 
} 

struct Composite { 
    var step1: FoodItem 
    var step2: CookingInstructions? 
} 
Verwandte Themen