This repository was archived by the owner on Mar 8, 2021. It is now read-only.
Releases: MoyaMapper/MoyaMapper
Releases · MoyaMapper/MoyaMapper
3.0.1
3.0.0
- 指定
Moya版本>=14.0.0 - 指定
iOS版本>=10.0
2.0.0
语法更新至 Swift 5.0
使用Carthage需要特别注意
Cache的指定,需指定为github "Igor-Palaguta/Cache" "560f00a9a9549db161ca70d96eed74fc580b03e3"Moya 13.0版本还未支持RxSwift 5.0.1,所以RxSwift的版本不能指定5.0及以上
1.2.3
- 完善转模型功能
现在Data、字典、json字符串 等都可以转为 Modelable
/// Modelable -> mapping -> Model
static func mapModel(from object: Any) -> Self
/// Modelable -> mapping -> Models
static func mapModels(from object: Any) -> [Self]
/// Codeable -> Model
static func codeModel(from object: Any) -> Self
/// Codeable -> Models
static func codeModels(from object: Any) -> [Self]Example
let model = models[0]
let jsonData = model.toData()
let jsonDict = model.toDictionary()
let jsonString = model.toJSONString()
let model1 = MyModel.mapModel(from: jsonData!)
let model2 = MyModel.mapModel(from: jsonDict)
let model3 = MyModel.mapModel(from: jsonString)1.2.1
- 修复多层嵌套解析失败的问题
- 支持定义默认值策略、解析策略
struct AAA: Modelable {
var c1: String = ""
mutating func mapping(_ json: JSON) {
c1 = json["cc"].stringValue
}
}
struct BBB: Modelable {
var d1: [AAA] = []
var goodJob: String = ""
var d3: Int = 0
mutating func mapping(_ json: JSON) {
d1 = AAA.mapModels(from: json["d2"].rawString() ?? "")
}
// 定义解析策略
func keyDecodingStrategy() -> MMJSONDecoder.KeyDecodingStrategy {
return .convertFromSnakeCase
}
// 定义默认值策略
func customDefaultValueStrategy() -> MMJSONDecoder.NotFoundKeyOrValueDecodingStrategy {
return .customDefaultValue(MyCustomDefaultValue())
}
}// 定义自己的默认值
struct MyCustomDefaultValue: MMJSONDefault {
var boolValue: Bool { return true }
var intValue: Int { return 1 }
var int8Value: Int8 { return 1 }
var int16Value: Int16 { return 1 }
var int32Value: Int32 { return 1 }
var int64Value: Int64 { return 1 }
var uIntValue: UInt { return 1 }
var uInt8Value: UInt8 { return 1 }
var uInt16Value: UInt16 { return 1 }
var uInt32Value: UInt32 { return 1 }
var uInt64Value: UInt64 { return 1 }
var floatValue: Float { return 1 }
var doubleValue: Double { return 1 }
var stringValue: String { return "1" }
}1.1.6
Support Carthage
Carthage 拉取指定版本代码并编译为 .Framework 文件
carthage update --no-use-binaries --platform ios
Carthage 测试 Framework
carthage build --no-skip-current --platform ios
MMCache+Response.swift :86
TemplateParameter 必须包含init方法,否则使用时会遇到 initializer is inaccessible due to 'internal' protection level
子Framework使用时要注意在恰当的位置进行导入父Framework
#if !COCOAPODS
import MoyaMapper
#endif
1.1.5
- RxCache : 修复更新缓存操作导致订阅终止的问题
- Core : 添加
fetchStatusCode方法,方便获取接口返回的状态码
/// 获取接口返回的状态码
///
/// - Parameters:
/// - path: JSON数据路径 (默认为模型数据路径)
/// - keys: 目标数据子路径 (例: [0, "_id"])
/// - Returns: 接口返回的状态码
func fetchStatusCode(
path: String? = nil,
keys: [JSONSubscriptType] = []
) -> String// 配合 MoyaMapperPlugin 使用
let code = response.fetchStatusCode()1.1.4
MoyaMapperPlugin: 修复ModelableParameter失效问题
1.1.3
MoyaMapperPlugin: 完善对请求失败的捕捉
1.1.2
- 网络请求缓存新增可选参数
alwaysFetchCache