我正在使用Alamofire和ObjectMapper。我需要将Int转换为枚举。代码如下:
enum CountryCode: Int {
/**
Hong Kong
Raw value: 852
*/
case HK = 852
/**
Singapore
Raw value: 65
*/
case SG = 65
/**
Taiwan
Raw value: 886
*/
case TW = 886
/**
China
Raw value: 86
*/
case CN = 86
}
func mapping(map: Map) {
countryCode <- (
map["country_code"],
TransformOf<CountryCode, Int>(fromJSON: { (value: Int?) -> CountryCode in
return CountryCode(rawValue: value ?? CountryCode.HK.rawValue)!
}, toJSON: { (value: CountryCode?) -> Int? in
return value?.rawValue
})
)
}
无论Int值是什么,返回值每次都默认为HK。我在这里做错了什么想法?
答案 0 :(得分:1)
为什么必须创建自定义var countryCode : CountryCode = CountryCode.HK
实例?由于您的国家/地区代码具有默认值,因此您可以在字段声明中将其指定为:
countryCode <- (map["country_code"],EnumTransform<CountryCode>())
然后在映射函数中使用默认的ObjectMapper的EnumTransform
interface SomeType {
id: number;
[key: string]: any;
}