的iOS 12,夫特4.2
这两个做同样的事情,哪个更好?
private struct fieldV {
static let billV = 1
static let centV = 2
static let payerV = 3
}
private enum fieldInt: Int {
case bill
case cent
case payers
}
要使用的第一个是一个小更明显,所以我得到了这一点。
percent.tag = fieldV.centV
VS
percent.tag = fieldInt.cent.rawValue
当然我说的是3个不同的INTS VS单一的诠释,可以有三个值中的一个?但有一个更好的理由使用一个或其他?
结构和枚举是在这个意义上根本不同的:
请注意,在结构(也类,元组)的信息的表示时,所有的领域,而在枚举信息表示的情况下发生的任何各自领域的。
在你的情况清楚地结构是正确的答案,因为你需要的法案,并分纳税人所有三个领域的代表的完整信息。
当你有有限的已知选项,你应该使用枚举。枚举可以CaseIterable
,你可以一次使用它的情况all
!您可以switch
在一个枚举,它会自动跟踪添加和删除的情况下,如果你不使用的情况下default
。这些都是不可能的struct
或类。即使你想直接使用Int
值,而不rawValue
你应该考虑使用静态内部枚举是这样的:
private enum Field {
static let bill = 1
static let cent = 2
static let payer = 3
}
至于你的情况的命名,它看起来像Int
值是要比较什么的,你应该发送到服务器或等东西,它不是Field
本身的一部分。所以,我建议你使用一些计算的财产除外rawValue,而不是!
private enum Field {
case bill
case cent
case payers
var intValue: Int {
switch self {
case .bill: return 1
case .cent: return 2
case .payers: return 3
}
}
}
这可能会导致你更多的时间和写作,但它更方便的和错误的证明。如果你愿意,你可以添加自定义初始化。
在迅速的,你应该考虑使用上驼峰名字类型。 (枚举,结构,类)