【发布时间】:2018-07-19 12:53:01
【问题描述】:
我正在使用 ObjectMapper 库将我的 JSON object 映射到 Swift object。像下面的代码一样,传统的库方法对我来说效果很好。
tmpArray1 = Mapper<UserModel>().mapArray(JSONArray: result1)
tmpArray2 = Mapper<CompanyModel>().mapArray(JSONArray: result2)
现在,我想创建一个通用方法来根据我在该函数中传递的参数返回动态对象。我想有点像下面。
tmpArray1 = WrapperClass.shared.getModelObject(objType: UserModel, data: Any)
tmpArray2 = WrapperClass.shared.getModelObject(objType: CompanyModel, data: Any)
这是我的WrapperClass.swift 课程代码:
open class WrapperClass: NSObject {
static let shared = WrapperClass()
open func getModelObject(objType: Mappable, data: Any) -> Any? {
// Need Help Here
return <dynamic object>
}
}
我不知道我的方法是否 100% 正确,但我想要有点像我在函数的参数中传递的任何对象类型,我想要相同的对象类型作为回报,并用 ObjectMapper 对象映射。我正在使用Swift 4.0 版本。
您可以找到ObjectMapper 在这里。
更新: 我试过下面的东西,但它不起作用,显示错误
func getModelObject<T: Mappable>(modelType: T.Type, data: Any) -> [T]? {
if data is Array<Any> {
return Mapper<modelType>().mapArray(JSONArray: data as! [[String: Any]])
//ERROR: Use of undeclared type 'modelType'
}
return nil
}
【问题讨论】:
-
在 Swift 4 中,
ObjectMapper实际上已经过时,取而代之的是内置的Codable协议。
标签: ios iphone swift object objectmapper