我正在使用AlamofireObjectMapper来解析json对我的对象的响应。AlamofireObjectMapper是ObjectMapper的扩展。
根据他们的文档,我的模型类必须符合Mappable
协议。例如:
class Forecast: Mappable {
var day: String?
var temperature: Int?
var conditions: String?
required init?(_ map: Map){
}
func mapping(map: Map) {
day <- map["day"]
temperature <- map["temperature"]
conditions <- map["conditions"]
}
}
为了符合Mappable协议,我的模型类必须实现所需的初始化器和每个字段的Map函数。这是有意义的。
**但是,它如何支持struct
类型?**例如,我有一个Coordinate
结构,我尝试符合Mappable
协议:
struct Coordinate: Mappable {
var xPos: Int
var yPos: Int
// ERROR: 'required' initializer in non-class type
required init?(_ map: Map) {}
func mapping(map: Map) {
xPos <- map["xPos"]
yPos <- map["yPos"]
}
}
由于上面显示的错误,我无法使我的Coordinate
符合Mappable。
(我认为经常使用struct
作为坐标数据,而不是使用class
)
我的问题:
**问题1.**AlamofireObjectMapper或ObjectMapper库是否支持struct
类型?如何使用它们解析对struct
类型对象的json响应?
**Q2.**如果这些库不支持解析json对struct类型对象的响应,那么在iOS的Swift2中如何做到这一点?
1条答案
按热度按时间ubbxdtey1#
BaseMappable协议是这样定义的,因此您应该声明每个方法以符合
Mappable
。可Map协议的定义如下
您必须相应地实施它:
或
构造函数***不能标记为必需***,因为无法继承该结构Map函数必须标记为正在变更,因为该函数会变更结构中存储数据...