2017-03-02 49 views
0

我是新的swift,使用对象映射器进行映射,我如何映射如果消息键是json或字符串中的数组,它总是返回字符串。 的Json反应变量iOS Swift:对象映射器条件映射

{ “错误”:{ “代码”:404, “消息”: “消息”}}

{ “错误”:{ “代码”:406 , “消息”:[ “消息” ]}}

我类

class Response : NSObject, Mappable { 

    var code : Int? 
    var data : AnyObject? 
    var message : [String]? 


    required init?(map: Map) { 

    } 

    func mapping(map: Map) { 
     code <- map["code"] 
     data <- map["data"] 
     message <- map["messages"] 
    } 
} 

回答

0

您可以创建自定义转换为这样的转变。

创建一个类,即符合TransformType协议:

class ErrorMessagesTransform: TransformType { 
    func transformFromJSON(_ value: Any?) -> Array<String>? { 
     if let value = value as? String { 
      return [value] 
     } 
     if let value = value as? [String] { 
      return value 
     } 
     return [] 
    } 

    func transformToJSON(_ value: Array<String>?) -> String? { 
     // TODO: If needed 
     return nil 
    } 
} 
在映射功能

然后就去做:

func mapping(map: Map) { 
    code <- map["code"] 
    data <- map["data"] 
    message <- (map["messages"], ErrorMessagesTransform()) 
} 
+0

谢谢你,救我的一天 –