美文网首页
swift 模型转字典(模型嵌套模型)

swift 模型转字典(模型嵌套模型)

作者: Sunshine_Boys | 来源:发表于2019-01-29 14:59 被阅读14次

swift 4.0版本以后出现了Codable协议。

在Codable基础上进行 以下类型互转的时候遇到: 模型嵌套模型 (模型中包含数组模型的情况) 遇到 转换失败的问题,今天这里做一下笔记(代码没有优化,写的比较粗糙,请海涵)。
  • json -> model

  • model -> joon

  • Model ->Dictionary

  • Dictionary ->Model

  • Dictionary -> json

  • json -> Dictionary

importFoundation

protocolMappable:Codable{
    funcmodelMapFinished()
    mutatingfuncstructMapFinished()
}

extension Mappable {

    //MARK: -- 模型转字典
    funcreflectToDict() -> [String:Any] {
        /// 循环 递归
        ///
        /// -Parameters:
        ///  - m: 镜像
        ///  - isArray: value 的值是否是数组
        /// -Returns: 子集 字典
        funcforDicFuntion(m:Mirror,isArray:Bool=false) -> [String:Any] {
            vardictTemp = [String:Any]()
            forcaselet(key?, value)inm.children{
                letn =Mirror(reflecting: value)
                if(n.displayStyle== .collection) {
                    vararray = [[String:Any]]()
                    forindexinn.children{
                        letx =Mirror(reflecting: index)
                        array.append(forDicFuntion(m: x,isArray:true))
                    }
                    dictTemp[key] = array
                }elseif(n.displayStyle== .set|| n.displayStyle== .optional) {
                    continue
                }else{
                    if(valueisNSNull) {continue;}
                    if(n.children.count>0){
                        if(isArray){
                            dictTemp =forDicFuntion(m: n)
                        }else{
                            dictTemp[key] =forDicFuntion(m: n)
                        }
                    }else{
                        dictTemp[key] = value
                    }
                }
            }
            returndictTemp
        }

        letmirro =Mirror(reflecting:self)
        returnforDicFuntion(m: mirro)
    }
}

使用的时候 自建model 遵循Mappable协议 即可。
例子

vardic = zhjModel.reflectToDict()

若有疑问欢迎骚扰

相关文章

  • Swift 5.0 使用MJExtension 字典转模型

    记录下swift怎么使用MJExtension 字典转模型1.普通的字典转模型 2.字典数组嵌套转模型

  • Swift 字典转模型

    这里探讨字典转模型中模型的类型单一模型模型嵌套 (模型中包含模型 || 模型中包含模型数组) Swfit的字典转模...

  • swift 模型转字典(模型嵌套模型)

    swift 4.0版本以后出现了Codable协议。 在Codable基础上进行 以下类型互转的时候遇到: 模型嵌...

  • 使用MJExtension时用到的核心代码

    最简单的字典转模型 JSON字符串转模型 模型中嵌套模型 A模型中有数组属性T,T里面是B模型 模型中的属性名和字...

  • 14-Swift中字典转模型

    字典转模型(初始化时传入字典) 字典转模型(利用KVC转化) 一、 普通的字典转模型: 二、利用KVC字典转模型:

  • swift4 字典->模型-相互转换

    1.swift4出现了Codable协议,只要继承该协议,便可使用系统的模型转换,字典转模型,模型转字典。 2.本...

  • Swift 遇到的坑

    在swift中字典转模型,创建的model 继承自 NSObject,如果是swift 3 ,则在模型中创建属性不...

  • 字典和模型转换的问题

    iOS 常用的字典转模型框架:MJExtension在常见的开发中会碰到一些问题。 常见的情况有: 模型嵌套模型数...

  • iOS-模型

    在开发中,经常使用到模型,通常做法就是字典转模型 字典转模型的过程最好封装在模型内部 模型应该提供一个可以传入字典...

  • MJExtension字典转模型

    本文代码下载地址 复杂的字典 --> 模型 (模型里面嵌套数组,数组中又嵌套了模型) json数据如下: (1)首...

网友评论

      本文标题:swift 模型转字典(模型嵌套模型)

      本文链接:https://www.haomeiwen.com/subject/ggexsqtx.html