首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mantle是否需要完全指定Model?

Mantle是否需要完全指定Model?
EN

Stack Overflow用户
提问于 2015-03-30 05:50:48
回答 1查看 211关注 0票数 1

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

提前谢谢你,

EN

回答 1

Stack Overflow用户

发布于 2015-03-30 11:50:19

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

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

代码语言:javascript
复制
@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调用并手动应用转换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29335308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档