Как определить несколько типов переменных в одном файле .h с помощью `typedef NS_ENUM`

Я использовал typedef NS_ENUM для реорганизации констант данных в старом коде. Используя найденный здесь подход , каждый typedef объявляется в одном файле .h, который может быть импортирован в любой класс проекта. Содержимое файла .h помещается в сообщение компилятору. Это хорошо работает для переменных int.

MYCharacterType.h

    #ifndef MYCharacterType_h
    #define MYCharacterType_h 

    typedef NS_ENUM(NSInteger, MARGIN)
    {
        MARGIN_Top                          =  10,
        MARGIN_Side                         =  10,
        MARGIN_PanelBaseLine                =   1
    };
    ...
    #endif /* SatGamEnumType_h */

Но Xcode жалуется, когда я пытаюсь включить float variables

"Неинтегральный тип NSNumber является недопустимым базовым типом

например.

    typedef NS_ENUM(NSNumber, LINE_WIDTH) {
        LINE_WIDTH_Large                    = 1.5,
        LINE_WIDTH_Medium                   = 1.0,
        LINE_WIDTH_Small                    = 0.5,
        LINE_WIDTH_Hairline                 = 0.25
    };

Я получаю то же сообщение, использую ли я NSValue или NSNumber, поэтому я подозреваю, что typedef NS_ENUM не способ определить переменные float (или, по крайней мере, так, как я его использую).

Подход в этом ответе позволил бы мне делать то, что я уже организовал в одном файле, но не предлагает способ реорганизации переменных float в тот же файл. Может кто-нибудь объяснить, как это сделать, чтобы все переменные были определены в одном файле .h независимо от их типа? Благодаря

РЕШЕНИЕ

Это был ответил rmaddy после того, как я подошел к вопросу по-другому.

Ответ 1

Определение разных перечислений в одном .h.. как просто добавьте его в один файл.

typedef NS_ENUM(NSInteger, MARGIN)
{
    MARGIN_Top                          =  10,
    MARGIN_Side                         =  10,
    MARGIN_PanelBaseLine                =   1
};


typedef NS_ENUM(long, ENUM_2)
{
    ENUM_2_1    = 10,
    ENUM_2_2    = 20,
    ENUM_2_3    = 30,
};

typedef NS_ENUM(long, ENUM_3)
{
    ENUM_3_1    = 10,
    ENUM_3_2    = 20,
    ENUM_3_3    = 30,
};

// And so on as many as you want

И ваш второй вопрос: Enums могут быть только из интегральных типов данных, таких как int, long, long long, unsigned int, short и т.д.... Вы не можете использовать Non- Интегральные типы типа float или double или даже не любые объективные c-типы.

Вы можете сделать отображение перечисления для значений float, таких как fooobar.com/info/23894/...