Обновление 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);
}