使用 YYModel 时, Model 存在继承关系,如何处理?

2018-02-26 19:42:56 +08:00
 holonunu

YYModel 中可以使用以下两个方法处理 Model-JSON 转换的特殊情况:

//①定义字段-属性的映射,如字段为"userID"转换到 userId 属性
+ (NSDictionary *)modelCustomPropertyMapper;

//②验证 /处理字段的值,如字段值为"T"则赋值为 YES
- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic;

如果 Model 之间存在继承关系:

User
- int userId(api 返回 userID,需要实现①)
- 枚举 gender(api 返回 T/F 字符串,需要实现②转换成枚举)

LoginUser : User
- int loginId()(api 返回 loginID,需要实现①)
- bool isVip(api 返回 T/F 字符串,需要实现②转换成布尔)

问题是: LoginUser 实现的①、②会覆盖 User 实现的①、②,大家通常是怎么处理的呢?

6265 次点击
所在节点    iDev
8 条回复
timelessg
2018-02-26 20:05:03 +08:00
比较蠢的方法,子类方法拿到 super 方法的 return,加上子类的 key value 再 return,楼下继续
holonunu
2018-02-27 09:50:47 +08:00
@timelessg 这方法下不了手:) 再看看有没有别的方法,没有就只能这样了
ai277014717
2018-02-27 12:58:14 +08:00
把 1 楼的方法封装一下,换个名字,以后都用新方法。
Alchemistxxd
2018-02-27 16:54:09 +08:00
call super。还有就是最好少用入侵性这么强的底层 Model。
holonunu
2018-02-27 18:01:18 +08:00
@Alchemistxxd 是协议,不算入侵吧。只是继承就意味着覆盖。
Alchemistxxd
2018-02-27 18:12:15 +08:00
@holonunu 嗯看错了,太久没用 OC,联想成 Mantle 了
gunavy
2018-03-22 15:19:19 +08:00
modle 多了,还不如直接用字典
getinlight
2018-06-16 16:29:21 +08:00
变成一个属性 可好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX