gpt4 book ai didi

ios - 地幔是否需要完全指定模型?

转载 作者:行者123 更新时间:2023-11-29 10:31:42 25 4
gpt4 key购买 nike

我正在使用不断发展的 JSON。我最近开始使用 Mantle 编写代码来使用 JSON。对于我想做的事情来说,这似乎是一个很好的选择。但是,似乎如果正在使用的 JSON 具有模型中不存在的属性,则 JSON 转换将失败。我正在使用 [MTLJSONAdapter modelOfClass:fromJSONDictionary:error:]; 调用来映射 JSON。

提前致谢

最佳答案

仔细检查代码后,Mantle 确实要求所有 json 属性都映射到模型中的某些内容。否则,将会发生该属性的异常。

在 MTLModel 的 MTLValidateAndSetValue 内部,它在设置属性之前不检查该属性是否存在。

@try {
if (![obj validateValue:&validatedValue forKey:key error:error]) return NO;

if (forceUpdate || value != validatedValue) {
[obj setValue:validatedValue forKey:key];
}

return YES;
} @catch (NSException *ex) {
NSLog(@"*** Caught exception setting key \"%@\" : %@", key, ex);

// Fail fast in Debug builds.
#if DEBUG
@throw ex;
#else
if (error != NULL) {
*error = [NSError mtl_modelErrorWithException:ex];
}

return NO;
#endif
}

如果您使用的 JSON 不能保证与您的模型匹配,这就会出现问题。
我最终为我的工作做了一个自定义的 JSON 表示,让构造函数根据传入的 JSON 而不是模型构建对象。它将首先遍历 json 属性并尝试使用隐式映射将它们直接映射到模型属性。如果有任何属性需要特殊处理,则由子类覆盖 init 调用并手动应用转换。

关于ios - 地幔是否需要完全指定模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com