Когда вы опускаете явное значение для регистра enum на основе числа (которое вы сделали для drawerHeaderTitle
, drawerHeaderSubTitle
, drawerListItemActive
и drawerHeaderEndText
), компилятор автоматически увеличивает предыдущий регистрзначение на единицу и присвоить его новому случаю. Итак, что у вас есть на самом деле:
case navTitle = 20
case drawerListItemBadgeActiveFont = 10
case drawerHeaderTitle /* = 11 */
case formFilled = 16
case drawerHeaderSubTitle /*= 17 */
case drawerListItemActive /*= 18*/
case drawerListItemInActive = 14
case drawerHeaderEndText /*= 15*/
case formLabel = 12
case sampleCase = 18 /* Duplicates drawerListItemBadgeActiveFont */
Итак, похоже, что вы хотите, чтобы значение перечисления служило двойной обязанностью в качестве размера шрифта. Вы не можете сделать это из-за ограничения уникальности, но вы можете сделать это:
enum Font {
case navTitle
case drawerListItemBadgeActiveFont
case drawerHeaderTitle
case formFilled
case drawerHeaderSubTitle
case drawerListItemActive
case drawerListItemInActive
case drawerHeaderEndText
case formLabel
case sampleCase
var size: CGFloat {
switch self {
case .navTitle: return 20
case .drawerListItemBadgeActiveFont: return 11
case .drawerHeaderTitle, formFilled: return 16
// ...etc...
}
}
}
... и затем использовать такой код для извлечения размера:
func someFunc(font: Font) {
let size = font.size // 20 for navTitle, etc.
}