ibireme/YYModel

用空的@protocal 实现容器类的伪泛型识别?

Closed this issue · 5 comments

就是类似JSONModel的方案,

@protool  Dog;

@property (nonatomic, strong)NSArray<Dog>* dogs;

这样在YYClassPropertyInfo->_typeEncoding就拿到的是NSArray,这时候分离出Dog,就可以拿到容器类成员对象的类型了。可以作为modelContainerPropertyGenericClass的一个简便写法。

稍后会再考虑下。

倒不是说不好,但总感觉这么写显得太 trick 了。。除了要多写一个 protocol 外,还要假定这个 protocol 和类名一样。另外这么写也会和 OC 新加的 Lightweight Generics 有点冲突。。

可惜Lightweight Generics是编译时特性,我也想过如果property能获取到Lightweight Generics的ObjectType就好了,可惜不行。

molon commented

其实这样似乎蛮好的,哈哈。
多谢这么trick的方法,即使作者不加,也会改源码放到项目里用。
否则不小心没全面的改一个属性名造成的隐患很蛋痛,而且也方便多了,Lightweight Generics特性不搞swift的我们也不需要关心哈。 😄

molon commented

@ibireme
今天比较无聊,就这个issue搞了个小玩意。
pseudo-generic
在这个issue的建议前提下,快速编码,已经commit,https://github.com/molon/MLAutoReplace
而且呢,Lightweight Generics只是看起来和protocol冲突,但是实际上两者可以并存的。

希望能增加你添加这个功能的兴趣,个人觉得这建议蛮好的,这样一来基本上就不需要写什么映射的玩意了。:)