Mantle iOS:如何使用可变键创建 class 模型
Mantle iOS: How to create class model with variable key
我有一个 JSON 字典,如下所示:
{
"111": {"dates" : [<array_of_dates>],
"members" : [<array_of_members>]},
"112": {"dates" : [<array_of_dates>],
"members" : [<array_of_members>]},
"113": {"dates" : [<array_of_dates>],
"members" : [<array_of_members>]}
}
如您所见,嵌套字典的键是变量 (111, 112, 113)。
到目前为止,我制作的每个 Mantle 模型都有固定的键,所以我不知道如何处理这种特殊情况。
有什么想法吗?
你有几个选择:
- 将服务器端 API 更改为 return 此字典嵌套在键 (
{"property": { "111": …, "222": … }}
) 中,以便您可以实际绑定到它
- 在解析之前修改客户端上的响应
获得可以在 +JSONKeyPathsByPropertyKey
中使用的值后,您可以编写自定义值转换器来处理模型。
这里有两个例子可以帮助您入门:
- 内置
mtl_arrayMappingTransformerWithTransformer
https://github.com/Mantle/Mantle/blob/master/Mantle/NSValueTransformer%2BMTLPredefinedTransformerAdditions.m#L106-L229
- 自定义转换器将数组从 json 转换为集合和其他几个 https://gist.github.com/zats/2468e0cb012a9c3b6e22
最重要的部分是弄清楚您想如何使用从 JSON 获得的地图。也许你最好将它作为字典保存在私有 属性 中,并编写 public 方法以一种有意义的方式访问它
我有一个 JSON 字典,如下所示:
{
"111": {"dates" : [<array_of_dates>],
"members" : [<array_of_members>]},
"112": {"dates" : [<array_of_dates>],
"members" : [<array_of_members>]},
"113": {"dates" : [<array_of_dates>],
"members" : [<array_of_members>]}
}
如您所见,嵌套字典的键是变量 (111, 112, 113)。
到目前为止,我制作的每个 Mantle 模型都有固定的键,所以我不知道如何处理这种特殊情况。
有什么想法吗?
你有几个选择:
- 将服务器端 API 更改为 return 此字典嵌套在键 (
{"property": { "111": …, "222": … }}
) 中,以便您可以实际绑定到它 - 在解析之前修改客户端上的响应
获得可以在 +JSONKeyPathsByPropertyKey
中使用的值后,您可以编写自定义值转换器来处理模型。
这里有两个例子可以帮助您入门:
- 内置
mtl_arrayMappingTransformerWithTransformer
https://github.com/Mantle/Mantle/blob/master/Mantle/NSValueTransformer%2BMTLPredefinedTransformerAdditions.m#L106-L229 - 自定义转换器将数组从 json 转换为集合和其他几个 https://gist.github.com/zats/2468e0cb012a9c3b6e22
最重要的部分是弄清楚您想如何使用从 JSON 获得的地图。也许你最好将它作为字典保存在私有 属性 中,并编写 public 方法以一种有意义的方式访问它