Alamofire ObjectMapper,Int到enum不正确

时间:2016-01-15 12:15:29

标签: swift alamofire

我正在使用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。我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:1)

为什么必须创建自定义var countryCode : CountryCode = CountryCode.HK 实例?由于您的国家/地区代码具有默认值,因此您可以在字段声明中将其指定为:

countryCode <- (map["country_code"],EnumTransform<CountryCode>())

然后在映射函数中使用默认的ObjectMapper的EnumTransform

interface SomeType {
    id: number;
    [key: string]: any;
}