Swift 4.2 有一段很棒的代码来枚举枚举,这个问题不仅仅是循环枚举。
我有一个这样的枚举:
enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
}
此外,我想返回一些对象(比如 sessionDetails)。所以我为它创建了一个扩展。
extension RawRepresentable where RawValue == String {
var details: <Some_Object_Type> {
/// Create & return corresponding object
}
}
所以,如果我想获取中午 session 的详细信息,我可以这样做:
MyEnum.session2.details
好的!现在我想将我的 session 分组为第一批和第二批等。因此在 Enum 中添加了一小段代码:
enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
static let firstBatch = [session1.details, session2.details]
static let secondBatch = [session3.details, session4.details]
static let weekendBatch = [session1.details, session4.details]
}
请注意,我们不能将存储的属性与枚举一起使用。这是这里“静态”关键字的需要。
我想要的:
我想获取批处理项目的详细信息。下面一行将起作用:
MyEnum.firstBatch
它将给出 session 1 和 2 的详细信息(对象)。
问题:
上面的语句只会运行一次,因为它是静态的。每个 session 的详细信息都是动态的,我希望每次使用 .details
注意:
我必须将分组项目的详细信息提供给其他一些 util 方法。无法更改 util 方法输入结构。它只需要一组对象来验证。
需要帮助!!
最佳答案
您只需要计算静态属性而不是存储属性。
enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
static var firstBatch:[String] {
return [session1.details, session2.details]
}
static var secondBatch:[String] {
return [session3.details, session4.details]
}
static var weekendBatch:[String] {
return [session1.details, session4.details]
}
}
关于swift - 静态变量在 Swift 中枚举枚举的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719994/