使用Swift 字典模型互转 就是这么简单

写在前面的话现在很多iOS项目的开发开始转向Swift语言。 相信 Swift语言很快会成为iOS工程师 必备技能。 字典转模型, 模型转转字典在开发过程中扮演非常重要的角色。 今天就和大家分享一下使用Swift,如何进行字典模型互转。 Demo功能:1,字典–>模型 :最简单的形式class User: NSObject { //模型类 var name:String? va
摘要由CSDN通过智能技术生成

写在前面的话

现在很多iOS项目的开发开始转向Swift语言。 相信 Swift语言很快会成为iOS工程师 必备技能。 字典转模型, 模型转转字典在开发过程中扮演非常重要的角色。 今天就和大家分享一下使用Swift,如何进行字典模型互转。

Demo在这里


功能:

1,字典–>模型 :最简单的形式

class User: NSObject {  //模型类
    var name:String?
    var icon:String?

   // print时会调用。相当于java中的 toString()。为了代码整洁下面的模型去了这个计算属性。测试时请下载demo
    override internal var description: String {  
        return "name: \(name) \n icon:\(icon) \n"
    }
}


 func func1(){
        let dict = ["name":"Jack","icon":"lufy.png"]
        if let user = User.objectWithKeyValues(dict) as? User{
             print("\(user)")
        }
  }
  输出: name: Optional("Jack") 
        icon: Optional("lufy.png") 

2,字典–>模型 :模型中包裹模型

//模型类
class Status :NSObject {  
    var text:String?
    var user:User?        //与 1 中的模型相同
    var retweetedStatus:Status?
}

 func func2(){
      let dict = ["text":"Agree!Nice weather!",
                  "user":["name":"Jack","icon":"lufy.png"],
                  "retweetedStatus":["text":"Nice weather!",
                                     "user":["name":"Rose","icon":"nami.png"]]                                      
                 ]

      if let status = Status.objectWithKeyValues(dict) as? Status{
          print("\(status)")
      }
 }
输出: 
    text:Optional("Agree!Nice weather!")
    user:Optional(name: Optional("Jack")  icon:Optional("lufy.png"))
    retweetedStatus:Optional(text:Optional("Nice weather!")
                             user:Optional(name: Optional("Rose")icon:Optional("nami.png"))
                             retweetedStatus:nil)

3,字典–>模型: 字典中包裹数组, 数组中的元素是 一个模型对应的字典

//模型类, 必须遵守DictModelProtocol协议, 并实现customClassMapping方法。
class UserGroup: NSObject,DictModelProtocol {
    var groupName:String?;            //团队名称
    var numbers:NSArray?              //成员,保存User实例
    static func customClassMapping() -> [String: String]?{
        return ["numbers":"User"];   //指定numbers数组中的元素类型是User
    }
}

func func3(){
   let dict = ["groupName":"Dream Team",
                 "numbers":[["name":"Jack","icon":"lufy.png"],
                            ["name":"Rose","icon":"nami.png"]]
               ]
   if let group = UserGroup.objectWithKeyValues(dict){
       print("\(group)")
   }
}

输出: groupName:Optional("Dream Team")
      numbers:Optional((
                        "name: Optional(\"Jack\") \n icon:Optional(\"lufy.png\") \n",
                        "name: Optional(\"Rose\") \n icon:Optional(\"nami.png\") \n"
    ))

4,字典–>模型: 将一个字典数组转成模型数组

func func4(){
        let arrayOfStatus = [["text":"Agree!Nice weather!",
                             "user":["name":"Jack",
                                     "icon":"lufy.png"
                                    ],
                            "retweetedStatus":[
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值