用空的@protocal 实现容器类的伪泛型识别?
Closed this issue · 5 comments
goodbless commented
就是类似JSONModel的方案,
@protool Dog;
@property (nonatomic, strong)NSArray<Dog>* dogs;
这样在YYClassPropertyInfo->_typeEncoding就拿到的是NSArray,这时候分离出Dog,就可以拿到容器类成员对象的类型了。可以作为modelContainerPropertyGenericClass的一个简便写法。
ibireme commented
稍后会再考虑下。
倒不是说不好,但总感觉这么写显得太 trick 了。。除了要多写一个 protocol 外,还要假定这个 protocol 和类名一样。另外这么写也会和 OC 新加的 Lightweight Generics 有点冲突。。
goodbless commented
可惜Lightweight Generics是编译时特性,我也想过如果property能获取到Lightweight Generics的ObjectType就好了,可惜不行。
molon commented
其实这样似乎蛮好的,哈哈。
多谢这么trick的方法,即使作者不加,也会改源码放到项目里用。
否则不小心没全面的改一个属性名造成的隐患很蛋痛,而且也方便多了,Lightweight Generics特性不搞swift的我们也不需要关心哈。 😄
molon commented
@ibireme
今天比较无聊,就这个issue搞了个小玩意。
在这个issue的建议前提下,快速编码,已经commit,https://github.com/molon/MLAutoReplace
而且呢,Lightweight Generics
只是看起来和protocol
冲突,但是实际上两者可以并存的。
希望能增加你添加这个功能的兴趣,个人觉得这建议蛮好的,这样一来基本上就不需要写什么映射的玩意了。:)
ibireme commented