美文网首页
iOS 判断某个值是否属于控制器的变量

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

作者: AnthonyChen | 来源:发表于2018-07-02 16:09 被阅读60次

在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;
}

相关文章

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

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

  • ftl常用语法整理

    判空及默认值 ??:判断某个变量是否存在,返回boolean值 <#ifobject??> <#if ...

  • .sh脚本实用功能

    设置一个临时环境变量 等待用户输入一个值给变量 判断变量是否为空 判断环境变量是否为某个值 确定nvm命令所在路径...

  • C++ 判断一个数组是否全为0

    如果要判断一个数组里面是否全为某个变量的值, 以此类推,还可以判断所有元素是否大于或者小于某个值;除了数组,还可以...

  • [SkylerAI]零碎知识点07-SQL Server中NUL

    1.SQL中判断某个字段或变量是否为空值 须使用:'字段或变量 is null'或 '字段或变量 is not n...

  • PHP 基础语法

    PHP基本语法 变量相关的函数 isset() 判断变量是否被定义 empty() 判断变量是否为空值, unse...

  • JAVA switch case 语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 规则:switch 语句...

  • Java switch case 语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 语法 switch 语句...

  • iOS 判断控制器是否显示在屏幕上

    判断某一控制器是否显示在屏幕上,稍作修改判断某个UIView是否显示也可以

  • Java switch case 语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 语法格式: switch...

网友评论

      本文标题:iOS 判断某个值是否属于控制器的变量

      本文链接:https://www.haomeiwen.com/subject/kisluftx.html