在strcuts,类和枚举之间进行选择

时间:2017-06-01 16:05:49

标签: swift class struct enums

我有一些示例代码,因为我想弄清楚如何建模我的第一个应用程序。我不确定"鞋子的例子"应该是枚举或类。我想我可以创建一个具有每个类所有功能的类(sole,string,color,fit),然后创建主类的子类,并为需要它们的类添加其他功能。我还想过将每个设置为枚举因为数据是固定的。最终,我希望用户能够按下按钮,并确定某个条件对于枚举中的每个案例或类或结构中的每个存储属性是否是差,公平或优秀。

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 个答案:

答案 0 :(得分: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 something else”或“height”,那么你总是可以向Shoe类添加更多属性并使它们成为可选的,或者你可以子类化Shoe类添加更多属性。