2017-06-01 4 views
-1

の間で選択します。私は "靴の例"が列挙型かクラスであるかどうかは分かりません。私は、各クラスが持つすべての機能(唯一、文字列、色、フィット感)を持つ1つのクラスを作成し、メインクラスのサブクラスを作成し、それらを必要とするクラスのために他の機能を追加することができると思います。私はまた、データが修正されているので、列挙型としてそれぞれを設定することを考えました。最終的には、ユーザーがボタンを押して、クラスまたは構造体の列挙型または各格納されたプロパティの各ケースに対して条件が不良、公平、または優れているかどうかを判断できるようにします。は私が私の最初のアプリをモデル化する方法を把握しようとしていますように私は一緒に入れていくつかのサンプルコードを持ってstrcuts、クラスや列挙型

enum Conditions { 
    case poor 
    case fair 
    case excellent 
} 

// Shoe exmaples 

enum Nike { 
    case sole 
    case string 
    case color 
    case fit 
} 

struct Rebook { 
    case sole 
    case string 
    case color 
    case fit 
} 

enum Jordan { 
    case sole 
    case string 
    case color 
    case fit 
} 

enum sketchers { 
    case sole 
    case string 
    case color 
    case fit 
    case (idk something else) 
} 

enum heels { 
    case sole 
    case string 
    case color 
    case fit 
    case height 
    case width 
} 

または

答えて

1

あなたの現在のアプローチはほとんどあり。私が正しくあなたを理解していれば、あなたは靴の各プロパティが条件列挙してランク付けされることにしたいです。あなたはそうのように、それぞれの靴にジェネリッククラスを作るより多くの運を持っているかもしれません:

class Shoe { 
    var sole: Condition? 
    var string: Condition? 
    var color: Condition? 
    var fit: Condition? 

    init(sole: Condition, string: Condition, color: Condition, fit: Condition) { 
     self.sole = sole 
     self.string = string 
     self.color = color 
     self.fit = fit 
    } 
} 

これは今、あなたの代わりに、それぞれの靴に異なる列挙型の、あなたが望むすべてのタイプのためにShoeのインスタンスを作成することができます。ユーザーはナイキをランク付けした場合たとえば、あなたがそうのように、その結​​果を保存することがあります

var Nike = Shoe(sole: .poor, string: .excellent, color: .fair, fit: .excellent) 

のか、「高さ」「何かをIDKの」のようなあなたは、それぞれの靴のためのさまざまなランキングを追加したい場合は、あなたにShoeクラスには常にプロパティを追加してそれらをオプションにすることができます。または、Shoeクラスをサブクラス化して、さらにプロパティを追加することができます。

関連する問題