2017-05-31 80 views
2

我试图做一些应该是可能的,但我得到一个奇怪的错误。我有一个嵌套类型Gravl.Node,我试图实例元组的这样一个数组:Swift无法创建包含嵌套类型的元组数组

var attributes = [(attribute: String?, value: Gravl.Node)]() 

...但斯威夫特抱怨:

不能调用非功能型“[(属性的值: ?字符串型号及价值:Gravl.Node.Type)”

任何想法怎么办?如果我用别的东西替换嵌套类型,它可以正常工作。

这是解析器/编译器中的错误吗?

+1

这是一个错误, https://stackoverflow.com/questions/32833078/swift-cannot-create-empty-array-of-nested-enum-type。 –

+1

解决方法:'typealias Gravl_Node = Gravl.Node','var attributes = [(attribute:String ?, value:Gravl_Node)]()' – vacawama

+0

@vacawama Aha,我没有想过尝试一个typealias,谢谢! – devios1

回答

2

是的,这是一个由this question指出的错误。

下面是Q & A的例子,你可以改变的方式的语法创建数组:

var attributes: [(attribute: String?, value: Gravl.Node)] = [] 

var attributes = Array<(attribute: String?, value: Gravl.Node)>() 

在这种情况下,你可以也可以通过创建一个typealias解决此问题:

示例:

class Gravl { 
    enum Node { 
     case first, last 
    } 
} 

typealias Gravl_Node = Gravl.Node // work around Swift bug 
var attributes = [(attribute: String?, value: Gravl_Node)]() 

attributes.append((attribute: "hello", value: Gravl.Node.first))