421
社区成员
发帖
与我相关
我的任务
分享
阅读优秀的开源框架,对提升自己的能力有很大帮助。HandyJSON
库就是其中的优秀框架之一, 本文介绍一下HandyJSON
库是如何处理类型间相互转换的。
我们在开发时,常见的类型转换如下:
类型的转换 其实是类型加工的过程。 输入一个类型,通过加工处理后输出另外一种类型。 基于这种通用的处理,可以进行高层抽象。在Swift中抽象类型的定义使用关联类型( associatedtype
)来实现,再结合协议来抽象。代码看起来如下:
public protocol TransformType {
associatedtype Object
associatedtype JSON
func transformFromJSON(_ value: Any?) -> Object?
func transformToJSON(_ value: Object?) -> JSON?
}
下面摘录一下HandyJSON库中各类型转换的代码实现:
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
我们支持博客发评论红包了: https://blog.csdn.net/blogdevteam/article/details/128932621 可以试一试。