Как определить, какой константе в перечислении принадлежит значение кода int

0

Обновление 1

+(PKMainWeatherType)getWeatherTypeWithWeatherId:(NSUInteger)weatherId{

    if(weatherId >= PKMainWeatherTypeAdditional) return PKMainWeatherTypeAdditional;
    if(weatherId >= PKMainWeatherTypeExtreme) return PKMainWeatherTypeExtreme;
    if(weatherId >= PKMainWeatherTypeClouds) return PKMainWeatherTypeClouds;
    if(weatherId >= PKMainWeatherTypeAtmosphere) return PKMainWeatherTypeAtmosphere;
    if(weatherId >= PKMainWeatherTypeSnow) return PKMainWeatherTypeSnow;
    if(weatherId >= PKMainWeatherTypeRain) return PKMainWeatherTypeRain;
    if(weatherId >= PKMainWeatherTypeDrizzle) return PKMainWeatherTypeDrizzle;
    if(weatherId >= PKMainWeatherTypeThunderstorm) return PKMainWeatherTypeThunderstorm;
    return PKMainWeatherTypeNone;
}

Это лучший способ получить соответствующую константу?


Оригинальное сообщение

Учитывая следующее перечисление

typedef NS_ENUM(NSUInteger, PKMainWeatherType)
{
    PKMainWeatherTypeNotFound = 0,
    PKMainWeatherTypeThunderstorm = 200,
    PKMainWeatherTypeDrizzle = 300,
    PKMainWeatherTypeRain = 500,
    PKMainWeatherTypeSnow = 600,
    PKMainWeatherTypeAtmosphere = 700,
    PKMainWeatherTypeClouds = 800,
    PKMainWeatherTypeExtreme = 900,
    PKMainWeatherTypeAdditional = 951,
};

как я могу определить, какая константа говорит, номер кода 224? В этом случае он будет принадлежать PKMainWeatherTypeThunderstorm.

В этом случае я хочу, чтобы все числа, попадающие в диапазон, были связаны с их константой. Посмотрите на эту ссылку, чтобы увидеть значения кода и их ассоциации.

Я думал о flooring значение INT кода, но то, что может создать проблемы для последней постоянной, так как последние две константы в одном домене 900 и, таким образом пол будет вызывать все кодовые значения выше 951, чтобы быть классифицированы в постоянной, перед которой имеет этажные значение 900.

Может ли кто-нибудь обеспечить чистое решение?

  • 0
    Что такое NS_ENUM ?
  • 0
    @Conclusio Это перечисление.
Теги:
enums
ios7

1 ответ

0

Если PKMainWeatherTypeAdditional является единственным, который не следует шаблону, вам просто нужно обработать этот конкретный случай, а затем вычислить остальное.

Строго учитывая коды, доступные в приведенной ссылке:

+ (PKMainWeatherType)getWeatherTypeWithWeatherId:(NSUInteger)weatherId {

    if (weatherId >= PKMainWeatherTypeAdditional) return PKMainWeatherTypeAdditional;

    return (PKMainWeatherType)(weatherId / 100 * 100);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню