美文网首页iOS开发学习iOS DeveloperiOS学习笔记
MJExtension关键字替换和驼峰法同时使用注意事项

MJExtension关键字替换和驼峰法同时使用注意事项

作者: 东东隆东抢 | 来源:发表于2017-05-22 16:16 被阅读56次

在之前的某个项目中,字典转模型时同时使用关键字替代方法和驼峰法,即:

id关键字替代

+(NSDictionary*)mj_replacedKeyFromPropertyName{
    return @{@"ID":@"id"};
}

驼峰法

+ (NSString *)mj_replacedKeyFromPropertyName121:(NSString *)propertyName{

    return [propertyName mj_underlineFromCamel];
}

在使用过程中发现关键字替代方法无效,即使用ID无法获取解析数据,如下图:


使用ID替换id关键字.png

在gitHub上查看issue时发现也有很多人遇到这样的问题,也都在询问解决方法和原因。后来又仔细翻看了Closed issue,发现里面有相关描述。

原因分析

mj_replacedKeyFromPropertyName121方法优先级比mj_underlineFromCamel方法高,key在执行mj_replacedKeyFromPropertyName121方法的时候已经经过mj_underlineFromCamel方法返回具体值,不会再执行mj_replacedKeyFromPropertyName方法。可将mj_replacedKeyFromPropertyName的内容合并在mj_replacedKeyFromPropertyName121方法里。

解决方案

+ (NSString *)mj_replacedKeyFromPropertyName121:(NSString *)propertyName{
    //解决关键字冲突
    if ([propertyName isEqualToString:@"ID"]) return @"id";   
    return [propertyName mj_underlineFromCamel];
}

或者在mj_replacedKeyFromPropertyName121方法里对关键字不做处理,即返回nil,然后再在mj_replacedKeyFromPropertyName使用ID替换关键字id,不过个人觉得有点多此一举,不如上述方法。

+(NSDictionary*)mj_replacedKeyFromPropertyName{
    return @{@"ID":@"id"};
}
+ (NSString *)mj_replacedKeyFromPropertyName121:(NSString *)propertyName{
    if ([propertyName isEqualToString:@"ID"]) return nil;//对关键字不作处理
    return [propertyName mj_underlineFromCamel];
}

自此困扰很久的一个问题完美地得到解决!

相关文章

  • MJExtension关键字替换和驼峰法同时使用注意事项

    在之前的某个项目中,字典转模型时同时使用关键字替代方法和驼峰法,即: id关键字替代 驼峰法 在使用过程中发现关键...

  • 关于iOS项目中BaseModel

    关于关键字替换或者其他的使用MJExtension声明文件.h 实现文件 .m

  • swift 中 guard 关键字的使用

    注意事项 1.guard关键字必须使用在函数中。 2.guard关键字必须和else同时出现。 3.guard关键...

  • java命名规范

    使用前注意事项: 1、由于Java面向对象编程的特性, 在命名时应尽量选择名词 2、驼峰命名法(Camel-Cas...

  • 命名的规范

    使用前注意事项: 1、由于Java面向对象编程的特性, 在命名时应尽量选择名词 2、驼峰命名法(Camel-Cas...

  • 四.Android编写代码规范

    0.命名法 驼峰式命名法(CamelCase)分大驼峰式命名法(UpperCamelCase)和小驼峰式命名法(l...

  • Objective-C命名规范

    一般使用驼峰命名法,这是百度百科对驼峰命名法的解释:骆驼式命名法(Camel-Case)又称驼峰命名法,是电脑程式...

  • mybatis学习需要查官方网站

    使用jdbc的getGeneraatedKeys 使用列别名替换列名 开启驼峰命名转换 Table(create_...

  • iOS 模型字典互转实用库

    一,库名称:MJExtension 二,pod引入: pod 'MJExtension' 三,注意事项: 属性名需...

  • JavaScript的命名法和关键字

    1.驼峰式/驼峰命名法 名称首字母小写,其他每个单词的首字母大写。 2.帕斯卡命名法 和驼峰命名法类似,但是,驼峰...

网友评论

    本文标题:MJExtension关键字替换和驼峰法同时使用注意事项

    本文链接:https://www.haomeiwen.com/subject/pvxixxtx.html