Обновление 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.
Может ли кто-нибудь обеспечить чистое решение?
Если PKMainWeatherTypeAdditional
является единственным, который не следует шаблону, вам просто нужно обработать этот конкретный случай, а затем вычислить остальное.
Строго учитывая коды, доступные в приведенной ссылке:
+ (PKMainWeatherType)getWeatherTypeWithWeatherId:(NSUInteger)weatherId {
if (weatherId >= PKMainWeatherTypeAdditional) return PKMainWeatherTypeAdditional;
return (PKMainWeatherType)(weatherId / 100 * 100);
}
NS_ENUM
?