嵌套枚举作为字典键

3
这个为什么不起作用?需要注意的是,如果枚举不是嵌套的,则作为字典键可以正常工作。
struct OuterStruct
{
    enum InnerEnum
    {
        case none
        case a
        case b
    }
}

var dict : [OuterStruct.InnerEnum: String] = [OuterStruct.InnerEnum: String]()
1个回答

4
您可以通过使用传统的实例化字典的方式来解决这个问题:
var dict : [OuterStruct.InnerEnum: String] = Dictionary<OuterStruct.InnerEnum, String>()

请注意,您可以使用类型推断来避免指定变量类型:
var dict = Dictionary<OuterStruct.InnerEnum, String>()

关于为什么速记语法不起作用,我没有答案 - 我认为您应该就此问题提交一个反馈。我尝试将InnerEnum转换为结构体和类,但是报告了相同的错误。

谢谢,那个可行。是的,我知道类型推断,但有时编译器需要一点帮助。我会提交一个雷达。 - user965972
我已经更新了您的答案,并提供了Swift 3的解决方案。 - Mark
@标记我发布的原始解决方案在Swift 3中没有问题-刚在playground中测试过。你遇到了什么错误? - Antonio
嗯,非常奇怪,我不再收到任何错误信息了。那么请忽略我的评论。感谢您的再次确认。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接