5 . 前面都是些常规用法, 下面开始装逼...
所谓高级用法其实就是严密的逻辑加科学的管理(抽抽抽!!!)加牛逼的架构加首席科学家的思想云云...不扯了...
恩恩..
以上所有操作都是在我们的模型里面完成的, 这样就对模型造成了一定的污染, 下次我们代码万一不用 MJExtension 了, 那这些模型就都不能用了, 那就哭吧...所以大神 MJ 早就给我们做好了一切, 然后一群菜狗们屁颠屁颠拿来装逼了, 比如本人...
以上的所有操作都可以不用再模型中操作, 我们可以拿出来放在外面, 比如某个 viewController 里面统一设置
例子2中这么写, 方法名差不多,只不过换成了 block 回调
//例子 2.
[Person mj_setupReplacedKeyFromPropertyName:^NSDictionary *{return@{//模型属性: JSON key, MJExtension 会自动将 JSON 的 key 替换为你模型中需要的属性
@"ID":@"id",@"descrip":@"description",//@"address":@"address.province",
@"dogName":@"address.family[2].dog",
};
}];
//例子 3.
[Person mj_setupReplacedKeyFromPropertyName121:^NSString *(NSString *propertyName) {//propertyName 是你属性名, 你把属性名格式化成对应字典中 key, 返回就可以了
NSMutableString*key = [NSMutableString string];//遍历propertyName的所有字符
for (NSInteger i = 0; i < propertyName.length; i++) {
unichar c=[propertyName characterAtIndex:i];if (c >= 'A' && c <= 'Z') { //大写字母
[key appendFormat:@"_%c", c + ('a' - 'A')];
}else { //非大写字母
[key appendFormat:@"%c", c];
}
}returnkey;//其实 MJ的框架里已经实现了这个方法, 你只需一句代码:请跟着我心中默默念一句: 卧槽...//return [propertyName mj_underlineFromCamel];
}];
//例子 4.
[Person mj_setupObjectClassInArray:^NSDictionary *{return@{@"users":@"User",//或者//@"users":[User class],
};
}];
别急, 还没完, 下面来电思想层面的鸡汤...
没发现其实这些其实都是一次性的设置吗, 开发中我们这样的配置会十分平凡, 感觉上是不是很想抽的冲动...这一堆东西写在控制器里, 而且不一定只是一个控制器, 好多控制器都会有, 只要你需要转模型...
那怎么抽呢, 其实你发现没, 这和我们经常会抽一个专门管理常量的的类的做法, 是不是很类似, 这里我们也是这个需求
所以我们单独抽一个专门配置模型的 MJExtensionConfig类来管理这些配置, 这样不是方便许多吗!!!!所以我们将上面的那些配置统统拿到我们的配置类中
放到哪儿最合适, 当然是+ load中喽
别急, 还没完, 下面来电思想层面的鸡汤...
没发现其实这些其实都是一次性的设置吗, 开发中我们这样的配置会十分平凡, 感觉上是不是很想抽的冲动...这一堆东西写在控制器里, 而且不一定只是一个控制器, 好多控制器都会有, 只要你需要转模型...
那怎么抽呢, 其实你发现没, 这和我们经常会抽一个专门管理常量的的类的做法, 是不是很类似, 这里我们也是这个需求
所以我们单独抽一个专门配置模型的 MJExtensionConfig类来管理这些配置, 这样不是方便许多吗!!!!所以我们将上面的那些配置统统拿到我们的配置类中
放到哪儿最合适, 当然是+ load中喽
从如下转载:https://www.jianshu.com/p/11a8e15f7d2b