美文网首页
HandyJson 一个属性对应多个键

HandyJson 一个属性对应多个键

作者: Fillinse | 来源:发表于2021-09-09 14:57 被阅读0次

今天在处理一个公共搜索头部控件的时候,头部控件需要流式展示一堆名字,但是名字的来源于不同的model,所以需要把不同来源的model,转化成显示所需要的model,其中name字段,在不同的来源modle对应的字段不一样,展示的model是name字段,来源A是playName,来源B是nickName字段,以前没遇到过这种情况,或者说遇到这种情况都是OC了,加了一堆判断,也就处理了,我OC很少处理成模型使用,可能是我菜吧。然后我找了半天,都没找到资料,在寻找的过程中,看到有个路人甲在一个handyjson的文章下问这个问题,结果回复打不开,但是我看到了YYModel(我OC一般是用MJExtension)的写法,可以对应一个数组,所以尝试了一下数组写法,发现可以用,真是小惊喜呢。于是记录一下。一下是相关代码片段:

使用的地方

   func update(_ list:[SKScriptListItem]){
      dataArray = list
      type = .script
      listArray.removeAll()
      let list2 = [SKHeadNameItem].deserialize(from: list.toJSON() as [Any])! as! [SKHeadNameItem]
      listArray.append(contentsOf: list2)
      collectionView.reloadData()
   }
   func updateDM(_ list:[SKHoomDMItem]){
      dataArray = list
      type = .script
      listArray.removeAll()
      let list2 = [SKHeadNameItem].deserialize(from: list.toJSON() as [Any])! as! [SKHeadNameItem]
      listArray.append(contentsOf: list2)
      collectionView.reloadData()
   }

模型解析

struct SKHeadNameItem:HandyJSON {
   var id = 0
   var name = ""
   private var width = 0.0

   mutating func itemWidth() -> CGFloat{
      if width != 0 {
         return CGFloat(width)
      }
      let label = UILabel.label("", .font(type: .regular, size: 15), MainColor);
      label.text = name
      var size = label.sizeThatFits(.init(width: 0, height: 23))
      if size.width < 100 {
         size.width = 100
      }
      if size.width > (kScreenWidth - 160) {
         size.width = kScreenWidth - 160
      }
      width = Double(size.width)
      return CGFloat(width)
   }
   mutating func mapping(mapper: HelpingMapper) {
      mapper <<<
         self.name <-- ["nickName","playName"]
   }
}

相关文章

  • HandyJson 一个属性对应多个键

    今天在处理一个公共搜索头部控件的时候,头部控件需要流式展示一堆名字,但是名字的来源于不同的model,所以需要把不...

  • 【2017-08-31】数据结构与算法(二)

    字典 字典中的键映射多个值通常情况下,一个键对应一个值,如果想要一个键对应多个值,那么需要将多个值放入其他容器中,...

  • python核心编程-字典的键

    不允许一个键对应多个值 每个键只能对应一个项。也就是说,一个键对应多个值是不允许的(像列表,元组和其他字典这样的容...

  • HandyJSON简单使用

    一、HandyJSON简介 HandyJSON 是阿里开发的一个在swift上把JSON数据转化为对应model的...

  • Python 字典中的键映射多个值

    字典中的键映射多个值 问题 如何实现一个字典(multidict)的键对应多个值? 解决方法 字典的定义就是一个键...

  • HandyJSON浅析(二)

    咱们在HandyJSON浅析(一)中讲了HandyJSON是怎么从类信息中获取这个类中的属性个数、以及属性信息,比...

  • Python3 关于字典的更多秘密,也许你还不知道

    关于字典的更多秘密,也许你还不知道 让字典的键对应多个值 让字典中的一个键去对应多个值,其实这实现起来并不难。比如...

  • Oracle11g学习笔记(一)——关系型数据库的基本理论

    能唯一标识表中不同行的属性或属性组(多个属性的组合)称为主键或复合主键 唯一键:键是由一个列组成 复合键:键是由多...

  • 数据库

    1. 主键: 能够唯一地标识一个元组的属性或属性组称为关系的键或候选键。 若一个关系有多个候选键则可选其一作...

  • 2018-01-02 Qtdesigner

    Qt designer 设置快捷键的方法: 在属性编辑器中的shortcut 属性设置对应的菜单栏快捷键 2.打开...

网友评论

      本文标题:HandyJson 一个属性对应多个键

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