Apple 在 Lister 演示中更喜欢使用结构而不是枚举来声明序列化 key 有什么原因吗?可能有一些好处吗?
例如:
private struct SerializationKeys {
static let text = "text"
static let uuid = "uuid"
static let completed = "completed"
...
//duplicated key!
static let descriptionText = "text"
}
这里我们可能有潜在的键重复项。对于小对象来说这不是一个大问题(不要忘记复制/粘贴 :)),但对于具有十个字段的大对象来说这可能是一个真正的问题。
有了枚举,我们就没有这样的问题了:
private enum SerializationKeys : String {
case text = "text"
case uuid = "uuid"
case completed = "completed"
//...
case descriptionText = "text"
//here we have compiler's warning: Raw value for enum case is not unique
}
很高兴听到一些对此的想法。
最佳答案
有时我也会做同样的事情,这就是原因。
有了结构,我的值就直接可用了:所以,如果 SerializationKeys 是一个结构,那么 SerializationKeys.text
就是一个字符串。
但是对于枚举,枚举就是值。如果 SerializationKeys 是枚举,则 SerializationKeys.text
不是字符串;不是;这是一个枚举。如果我想要字符串,我必须显式获取它,作为枚举的 rawValue
。有时候,这太疯狂了。另一方面,如果它是可以接受的,或者如果有其他原因使它成为一个好的枚举,那么很好,我将使用一个枚举。
换句话说:如果这只是一些常量的美化命名空间,那么具有静态成员的结构似乎最简单。枚举用于开关,即需要以多种可能状态中的一种恰好存在的东西。
关于ios - 用于序列化 key 的结构或枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649220/