2014-12-04 2 views
3

Есть ли причина, по которой это не работает? Примечание: перечисление в качестве словарного ключа работает, если оно не вложено.вложенное перечисление в качестве словарного ключа

struct OuterStruct 
{ 
    enum InnerEnum 
    { 
     case none 
     case a 
     case b 
    } 
} 

var dict : [OuterStruct.InnerEnum: String] = [OuterStruct.InnerEnum: String]() 

ответ

4

Вы можете исправить это с помощью традиционного способа создания экземпляра словаря:

var dict : [OuterStruct.InnerEnum: String] = Dictionary<OuterStruct.InnerEnum, String>() 

Заметьте, что вы можете использовать определение типа и не указывать тип переменной:

var dict = Dictionary<OuterStruct.InnerEnum, String>() 

As почему синтаксис сокращений не работает, у меня нет ответа - я думаю, вы должны представить радар об этом. Я попытался превратить InnerEnum в структуру и класс, и сообщается о такой же ошибке.

+0

Спасибо, что работает. Да, я знаю о типе вывода, но иногда компилятору нужна небольшая помощь. Будет файл радара. – user965972

+0

Ни одно из этих решений, похоже, не работает с Swift 3. – Mark

+0

Я обновил ваш ответ с помощью решения для Swift 3. – Mark

Смежные вопросы