更新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
。
在这种情况下,我希望所有属于该范围的数字与其常量相关联。 查看this link以查看代码值及其关联。
我在考虑flooring
的int代码值,但是这会产生最后一个常量的问题,因为最后两个常量共享相同的900域,因此地板会导致951以上的所有代码值被归类为之前的常数的值为900。
任何人都可以提供干净的解决方案吗?
答案 0 :(得分:0)
如果PKMainWeatherTypeAdditional
是唯一一个不遵循该模式的人,您只需要处理该特定情况,然后计算其余情况。
严格按照提供的链接提供的代码:
+ (PKMainWeatherType)getWeatherTypeWithWeatherId:(NSUInteger)weatherId {
if (weatherId >= PKMainWeatherTypeAdditional) return PKMainWeatherTypeAdditional;
return (PKMainWeatherType)(weatherId / 100 * 100);
}