Swift HandyJSON库中的类型相互转换的实现

ReyZhang
新星创作者: 移动开发技术领域
2023-02-21 14:58:51

前言

阅读优秀的开源框架,对提升自己的能力有很大帮助。HandyJSON库就是其中的优秀框架之一, 本文介绍一下HandyJSON库是如何处理类型间相互转换的。

我们在开发时,常见的类型转换如下:

  • Data <- -> String
  • Date <- -> 时间戳
  • Date <- -> String
  • URL <- -> String
  • UIColor <- -> 十六进制的hex颜色
    .....
    等等吧

类型转换HandyJSON库的设计

类型的转换 其实是类型加工的过程。 输入一个类型,通过加工处理后输出另外一种类型。 基于这种通用的处理,可以进行高层抽象。在Swift中抽象类型的定义使用关联类型( associatedtype )来实现,再结合协议来抽象。代码看起来如下:

public protocol TransformType {
     associatedtype Object
     associatedtype JSON
     func transformFromJSON(_ value: Any?) -> Object?
     func transformToJSON(_ value: Object?) -> JSON?
}

下面摘录一下HandyJSON库中各类型转换的代码实现:

Data 与 String 之间的类型转换

open class DataTransform: TransformType {
     public typealias Object = Data
     public typealias JSON = String

     public init() {}

     open func transformFromJSON(_ value: Any?) -> Data? {
         guard let string = value as? String else{
             return nil
         }
         return string.data(.utf8)
     }

     open func transformToJSON(_ value: Data?) -> String? {
         guard let data = value else{
             return nil
         }
         return String.init(data:data encoding:.utf8)
     }
}

更多类型间的转换参考:https://zhanglei.blog.csdn.net/article/details/124069180

 

 

 

...全文
成就一亿技术人!
拼手气红包 5.00元
1239 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoftwareTeacher 2023-02-24
  • 打赏
  • 举报
回复

我们支持博客发评论红包了: https://blog.csdn.net/blogdevteam/article/details/128932621 可以试一试。

内容概要:LTK8319是一款单通道H桥有刷直流电机驱动器,工作电压范围为2.5V至12V,支持最高3.9A的峰值电流和2.5A的平均电流驱动能力,适用于小家电、玩具、电子锁、机器人等小型电动设备。该芯片通过两个逻辑输入(INA和INB)控制电机的正转、反转、停止与刹车,并支持PWM调速控制。集成欠压锁定(UVLO)、过温保护(TSD)及自动故障恢复功能,确保系统安全可靠运行。当INA和INB持续为低电平时,芯片进入低功耗休眠模式,显著降低静态功耗。采用ESOP-8封装,符合环保无铅标准。; 适合人群:电子工程师、嵌入式系统开发者、电机控制技术人员,以及从事小型机电产品研发的设计人员;具备基本电路知识和电机控制经验者更佳。; 使用场景及目标:①用于驱动小型有刷直流电机或步进电机的一个绕组,实现精确的方向与速度控制;②适用于电池供电设备中对功耗敏感的应用,利用休眠模式延长续航时间;③在电机启停频繁、负载波动大的场合,发挥其电流控制与保护机制优势,提升系统稳定性。; 阅读建议:此文档提供了详细的电气特性、功能逻辑表、保护机制与时序参数,建议结合典型应用电路进行硬件设计,并重点关注电源去耦电容选型、散热布局及PWM频率设置(不超过100kHz),以确保系统可靠运行。

420

社区成员

发帖
与我相关
我的任务
社区描述
专注移动ios平台的软件开发,多年的一线研发经验,实战经验丰富,只为你呈现有价值的信息。
iosflutterandroid 技术论坛(原bbs) 山东省·青岛市
社区管理员
  • ReyZhang
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧