2016-03-23 2 views
4

Я не могу инициализировать перечисление с помощью инициализатора rawValue. Есть предположения? Ошибка комментировал ниже:Перечисление: «невозможно построить, потому что он не имеет доступных инициализаторов»

//: Playground - noun: a place where people can play 
// Xcode Version 7.3 (7D175) 

import UIKit 

enum Theme { 
    case Default, Dark, Graphical 
} 

let possibleTheme = Theme(rawValue: 1) 
// Error: 'Theme' cannot be constructed because it has no accessible initializers. 
+1

В enum нет сырого типа, вам нужно добавить 'enum Theme: Int' – vadian

ответ

15
enum Theme: Int { 
    case Default, Dark, Graphical 
} 

let possibleTheme = Theme(rawValue: 1) // Dark 

Перечисление не имеет необработанное значение, если не указано его тип. Возможные типы необработанных значений: String, Character и любые типы номеров. Documentation

+0

Хорошо, это правильный ответ, но в чем его смысл? Почему вы должны создать перечисление с int? Зачем ухаживать за тем, что поддерживается в этом конкретном случае. Может привести только к неприятностям. – rafalio

+1

Это полностью зависит от проекта OP. Иногда бывает очень удобно создавать 'enum' из' Int', если, скажем, у вас есть 'UISegmentedControl'. –

+0

Честно говоря, просто работайте с учебником по UIAppearance. https://www.raywenderlich.com/108766/uiappearance-tutorial –

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