最近简单的了解了下 NSDictionary 转 Model 映射的 runtime 实现。记录如下:
|
|
首先,调用了class_copyPropertyList
这个方法来获取这个类的所有属性,其中propertyListCount
为属性的总数。其中这个方法返回的数组用objc_property_t *
来修饰,表示数组中元素为该类型(C 语言知识)。
随后在遍历数组的过程中,调用property_getName
方法将objc_property_t
转化成const char *
字符串,进而转换成 OC 的 NSString对象存入 keys 数组。
释放已经用过的allProperties数组。
再次遍历 keys 数组,取出对应的类的属性。利用 KVC 将 bookInfo 对应的 object 存入属性中。