iOS反射机制--1.属性反射

iOS属性反射:说白了,就是将两个对象的所有属性,用动态的方式取出来,并根据属性名,自动绑值。(注意:对象的类,如果是派生类,就得靠其他方式来实现了,因为得到不该基类的属性。

本人常用的反射方式,有如下两种:

  1. 从一个自定义实体类->自定义实体类
  2. 从一个NSDictionary->自定义实体类(此方式最最常用,如网络Json数据会组成NSDictionary。sqlite查询数据,可以用第三方组件组成NSDictionary
直接上码,(这里码在NSObject类别中)
获取对象所有属性:

需要 #import <objc/runtime.h>


<span style="font-size:14px;">- (NSArray*)propertyKeys
{
    unsigned int outCount, i;
    objc_property_t *properties = class_copyPropertyList([self class], &outCount);
    NSMutableArray *keys = [[NSMutableArray alloc] initWithCapacity:outCount];
    for (i = 0; i < outCount; i++) {
        objc_property_t property = properties[i];
        NSString *propertyName = [[NSString alloc] initWithCString:property_getName(property)encoding:NSUTF8StringEncoding];
        [keys addObject:propertyName];
    }
    free(properties);
    return keys;
}


- (BOOL)reflectDataFromOtherObject:(NSObject*)dataSource
{
    BOOL ret = NO;
    for (NSString *key in [self propertyKeys]) {
        if ([dataSource isKindOfClass:[NSDictionary class]]) {
            ret = ([dataSource valueForKey:key]==nil)?NO:YES;
        }
        else
        {
            ret = [dataSource respondsToSelector:NSSelectorFromString(key)];
        }
        if (ret) {
            id propertyValue = [dataSource valueForKey:key];
            //该值不为NSNULL,并且也不为nil
            if (![propertyValue isKindOfClass:[NSNull class]] && propertyValue!=nil) {
                [self setValue:propertyValue forKey:key];
            }            
        }
    }
    return ret;
}

/使用方法
NSDictionary *dicJsonData;
EntityObject *objValue;
[objValue reflectDataFromOtherObject:dicJsonData];//这样就可以完成对象的自动赋值了,

//你还在使用 
objValue.value = [dicJsonData objectForKey:@"value"];//out了</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
appium-inspector-windows-2022.9.1.exe是一个适用于Windows操作系统的Appium自动化测试工具的安装程序。Appium是一个流行的开源移动应用自动化测试框架,用于测试Android和iOS应用程序。 这个名为appium-inspector的工具是Appium的一个附加组件,它提供了一个图形化的用户界面,方便测试人员进行应用的视觉和交互元素的自动化测试。通过这个工具,测试人员可以快速地识别应用界面上的各种元素,如按钮、文本框、下拉菜单等,并执行相应的操作,如点击、输入文本等。 appium-inspector-windows-2022.9.1.exe是该工具的安装程序,意味着用户可以通过运行这个可执行文件来安装appium-inspector工具到Windows系统中。安装完成后,用户可以使用这个工具来进行Appium自动化测试。 要使用appium-inspector工具,用户需要先安装并配置好Appium环境,并确保Android和iOS设备的连接正确。然后,通过打开appium-inspector工具,用户可以通过输入应用的信息和相关配置,如应用的包名、Activity、设备名称等,来加载待测试的应用。一旦应用成功加载,用户可以使用appium-inspector工具的各种功能,如录制和回放测试脚本、查找和定位元素等,来进行自动化测试。 总之,appium-inspector-windows-2022.9.1.exe是一个方便的Appium自动化测试工具的安装程序,通过它可以将appium-inspector工具安装到Windows系统中,从而实现对Android和iOS应用的自动化测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值