iOS swift :Object mapper conditional mapping

标签 ios swift

我是 swift 的新手,使用对象映射器进行映射,如果消息键是 json 或字符串中的数组,我如何映射它总是返回字符串。 Json 响应

{ "error": { "code": 404, "messages": "message" } }

{ "error": { "code": 406, "messages": [ "message" ] } }

我的类(class)

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"]
    }
}

最佳答案

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

创建一个符合 TransformType 协议(protocol)的类:

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())
}

关于iOS swift :Object mapper conditional mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548359/

相关文章:

ios - iOS 中的图像旋转

ios - Swift 5 反射获取类属性列表并调用它们

ios - 如何从我的 iOS 应用程序中删除 crashlytics?

ios - 为什么 URLSession 在 iOS 10 上没有恢复?

ios - 如何修复 Xcode 中的 '_sqlite3_prepare_v3' 链接器错误

regex - 匹配最多两个运算符的正则表达式

ios - Worklight 6.1 在 iOS Swift native 应用程序中处理用户登录

ios - .toolbar {} 中的 ToolbarItemGroup 在工作表中不起作用

ios - 组合选项卡 View 和分割 View

swift - 如何防止关闭贝塞尔路径