iOS 判断某个值是否属于控制器的变量

在APP有动态配置的情况下,经常需要判断你所传的值是否跟你想跳转的控制器内的参数相同,需要在跳转前进行一些判断来防止控制器崩溃

判断控制器中是否拥有该字符串值的变量

/**
 判断控制器中是否拥有该字符串值的变量

 @param obj 控制器
 @param keystring 字符串值
 @return 是否拥有
 */
+ (BOOL)isPropertyFromObj:(id)obj WithKeyString:(NSString *)keystring {
    u_int count = 0;
    //存储成员变量名称的数组
    NSMutableArray *propertyArray = [NSMutableArray array];
    //获取控制器的成员变量数组
    objc_property_t *properties = class_copyPropertyList([obj class], &count);
    __block BOOL isProperty;
    for (int i = 0; i < count; i++) {
        // 取出成员变量
        objc_property_t property = properties[i];
        
        // 成员变量名字
        NSString *keyValue = [NSString stringWithFormat:@"%s",property_getName(property)];
        [propertyArray addObject:keyValue];
        
    }
     //判断成员变量名字数组中是否包含该参数
        if ([propertyArray containsObject:keystring]) {
            ///有这个参
            isProperty = YES;
        }else {
            ///没有这个参
            isProperty = NO;
        }
    return isProperty;
}

判断控制器是否拥有字典所传的值

/**
 判断控制器是否拥有字典所传的值

 @param obj 控制器
 @param dict 所传入的字典参数
 @return 是否拥有
 */
+ (BOOL)isPropertyFromObj:(id)obj WithObjDict:(NSDictionary *)dict {
    u_int count = 0;
    //存储成员变量名称的数组
    NSMutableArray *propertyArray = [NSMutableArray array];
    //获取控制器的成员变量数组
    objc_property_t *properties = class_copyPropertyList([obj class], &count);
    __block BOOL isProperty;
    for (int i = 0; i < count; i++) {
        // 取出成员变量
        objc_property_t property = properties[i];
        
        // 成员变量名字
        NSString *keyValue = [NSString stringWithFormat:@"%s",property_getName(property)];
        [propertyArray addObject:keyValue];

    }
    //遍历字典,判断数组中有没有该元素,有则YES,一旦一个没有则返回NO
    [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        if ([propertyArray containsObject:key]) {
            ///有这个参
            isProperty = YES;
        }else {
            ///没有这个参
            isProperty = NO;
            return ;
        }
    }];
    return isProperty;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • # XML复习 ## 第一章 ## 思考题 **什么是XML?** XML是可扩展性标记语言,XML是标准通用标记...
    冷漠铁锤丁富贵阅读 4,351评论 0 0
  • 丑数 第一个只出现一次的字符位置这题也简单,使用整数数组的值是否等于1判断是否有重复值。有个有意思的地方是初始化数...
    hayes0420阅读 1,063评论 0 0
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,087评论 2 9
  • 亲爱的战友们: 大家好!我是007-8班的刘转丽。接受学霸魏禹的分享邀请后,一直很忐忑,同时也很高兴。 忐忑的原因...
    峰回右转阅读 3,991评论 3 2
  • 狗叫起来了把黑夜咬出一个个破洞老鼠钻出来啮食泛黄的经书马随闪电隐入古代牛卧倒在地,咀嚼月光羊羔抖抖索索站起来鸡冠上...
    伊甸陨石阅读 4,717评论 5 9

友情链接更多精彩内容