有一个对象,比如说是仓库清单:model。苹果:100斤,香蕉:50斤,梨子:80斤。。。。。。。。(共50种货物)
现在我要建立一个tableView表格,一个分区,50个单元格,每个cell的内容是:货物种类 存有多少
cell肯定是根据IndexPatch.row来取值的,row对应的数组便是kindArr:["苹果","香蕉","梨子",......](长度为50)
在cell的代理函数中,我们不可能这么写:lable.text = model.kindArr[IndexPatch.row],绝对报错,问题就来了,如何把字符串转化成对象的属性呢?这个问题估计找很久都是竹篮打水。
所以这里换个思维,将对象的属性和属性值拆分成key、value,代码如下(Swift):
func getValueByKey(key:String) ->String{ let hMirror = Mirror(reflecting: model) for case let (label?, value) in hMirror.children{ if (label == key) { return value as! String; } } return ""; }
如此,cell里的代码就是lable.text = getValueByKey(key:kindArr[IndexPatch.row])
这边顺便复制过来一份OC的代码:iOS 获取对象的全部属性、把model的所有属性和对应的值转化为字典(网址:http://blog.csdn.net/moxi_wang/article/details/50740708)
//获取对象的所有属性 - (NSArray *)getAllProperties { u_int count; objc_property_t *properties =class_copyPropertyList([self class], &count); NSMutableArray *propertiesArray = [NSMutableArray arrayWithCapacity:count]; for (int i = 0; i<count; i++) { const char* propertyName =property_getName(properties[i]); [propertiesArray addObject: [NSString stringWithUTF8String: propertyName]]; } free(properties); return propertiesArray; } //Model 到字典 - (NSDictionary *)properties_aps { NSMutableDictionary *props = [NSMutableDictionary dictionary]; unsigned int outCount, i; objc_property_t *properties = class_copyPropertyList([self class], &outCount); for (i = 0; i<outCount; i++) { objc_property_t property = properties[i]; const char* char_f =property_getName(property); NSString *propertyName = [NSString stringWithUTF8String:char_f]; id propertyValue = [self valueForKey:(NSString *)propertyName]; if (propertyValue) [props setObject:propertyValue forKey:propertyName]; } free(properties); return props; }
下载说明
☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,
☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!
☉唯一站长QQ:1004003180 [人格担保-本站注重诚信!]
☉购买建议E-mail:1004003180@qq.com 源码收购 E-mail:1004003180@qq.com
☉本站文件解压密码 【文章内都自带解压密码,每个密码不同!】