我认为this问题对我的情况有用,但我对Mantle和iOS缺乏经验已经结束了我的思路。基本上,我有一大块JSON,我想将嵌套字典和数组转换为Mantle对象。
"features": {
"App": {
"status": "_ACTIVE",
"unavailableReasons": [],
"modernCapabilities": [{
"capabilityType": "LOCK_AUTO_REPLY",
"providerStatuses": [{
"providerType": "MY_PROVIDER",
"status": false,
"unavailableReasons": ["NOT_SUPPORTED_BY_PRODUCT", "DEVICE_OS_NOT_SUPPORTED"]
}]
},
...
...
{
"capabilityType": "LOCK_CONTACT_WHITELIST",
"providerStatuses": [{
"providerType": "OTHER_PROVIDER",
"status": true,
"unavailableReasons": []
}]
}
]}
}
我希望能够实现与上面链接的类似解决方案,即迭代字典中的“功能”键,并将变换应用于每个键/值对。因此,在这种情况下,到“App”键和它的字典值(以及后来的“modernCapabilities”键和它的数组等等)我知道对于后面的步骤我将需要单独的模型类,并且那些存在,但我遇到了第一步的麻烦,“App”键的变换及其价值。
这就是我现在所拥有的:
+ (NSValueTransformer *)featureTypesJSONTransformer {
NSValueTransformer *transformer = [NSValueTransformer valueTransformerForName:@"FeatureStatus"];
return [MTLValueTransformer transformerWithBlock:^NSDictionary *(NSDictionary *features) {
NSMutableDictionary *transformedValues = [[NSMutableDictionary alloc] init];
for (NSString *key in features) {
id transformedValue = [transformer transformedValue:[features objectForKey:key]];
if (transformedValue ) {
[transformedValues setObject:transformedValue forKey:key];
}
}
return transformedValues;
}];
}
从代码中可以看出,我正在尝试保留密钥,并将其附加到新的Dictionary,其值为另一个转换,本例中为FeatureStatus(@ {“App”:})
问题是没有[FeatureStatus transformedValue:],虽然我有一个JSONKeyPathsForPropetyKey,因为我想稍后映射'status','unavailableReasons'和'modernCapabilities'键。
我的下一步是什么?如何注册一个可以完成我想要它的ValueTransform?