我有一个(烦人的)情况,我的后端返回一个像这样的对象:
{
"user": {
"name": [
"John"
],
"familyName": [
"Johnson"
]
}
}
其中每个属性都是一个数组,其中包含一个字符串作为其第一个元素。在我的数据模型struct
中,我可以将每个属性声明为一个数组,但这真的很难看。我希望我的模型是这样的:
struct User: Codable {
var user: String
var familyName: String
}
但这当然会使编码/解码失败,因为类型不匹配。到目前为止,我使用ObjectMapper
的库提供了一个Map
对象和currentValue
属性,我可以将我的属性声明为String
类型,并在我的模型init
方法中通过这个函数分配每个值:
extension Map {
public func firstFromArray<T>(key: String) -> T? {
if let array = self[key].currentValue as? [T] {
return array.first
}
return self[key].currentValue as? T
}
}
但是现在我正在转换为Codable
方法,我不知道如何进行这种映射。有任何想法吗?